`
daqing15
  • 浏览: 41691 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

从其他地方移来的Java面题,欢迎讨论……

阅读更多

【来源】:http://topic.csdn.net/u/20100802/13/17463a72-9207-424a-94e8-7ef70d98f6ae.html?78349

【题目】

1.String a = new String("1"+"2")共建了几个对象

我相信,绝对是个经典兼考倒一堆人的题目。经典,Java的面、笔试上都会有,可又总是有人会犯晕。呵呵!

看构造器里面("1"+"2"),这个是在编译期就已经做了处理,即代表一个字符串:"12"。

当使用new的方法创建字符串时,注意这个”new“,就表示直接开辟了内存空间,VM在对其对象的值”12“;然后再把值放到VM的常量池中,并引用其本身。所以就创建了两个对象,看反编译后的代码:

String a = new String("1"+"2");
	System.out.println(a);
	反编译后的:
	Code:
  0:   new     #2; //class java/lang/String 在堆上创建了一个对象
  3:   dup
  4:   ldc     #3; //String 12最终的字符串值 

   在API中对使用new创建String的建议初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序列; 换句话说,新创建的字符串是该参数字符串的副本。

既然写到这了,就扩展开来,说说其他的情况,先说一个与题目中类似的,唯一区别是,不使用new创建

看代码:

String str1 = "ABC" + "CD";
String str2 = new String("ABC" + "CD");

 再看其反编译后的:

Code:
 0:   ldc     #2; //String ABCCD
 2:   astore_1
 3:   new     #3; //class java/lang/String
 6:   dup
 7:   ldc     #2; //String ABCCD

 对比一下,我想大伙都能看出了两者的区别,首先是,直接定义字符串常量,VM不会自动调用new创建,而是在VM维护的常量池中先查找,如果发现,直接返回一个对其的引用,若不存在,把其加入,再返回一个对其的引用。


此外,再总结一下与String 有关的三种加法:

  • String tmp = "a" + "b" + "c";
  • String tmp = null;tmp+= "a";tmp+= "b";tmp+= "c";
  • 使用Stringbuffer或StringBuilder(注意,其在多线程环境下是不安全的)的append方法

看看:

 Code:
	START-第一种情况String str1 = "ABC" + "CD":
  0:   ldc     #2; //String ABCCD
  2:   astore_1
  END-第一种情况
  
  START-第二种情况:String str2 = null;str2 += "ABC";str2 += "CDS";str2 += "DSS";
  3:   aconst_null
  4:   astore_2
  5:   new     #3; //class java/lang/StringBuilder:   创建了一个StringBuilder对象
  8:   dup
  9:   invokespecial   #4; 
  12:  aload_2
  13:  invokevirtual   #5; 
  16:  ldc     #6; //String ABC : 追加第一个字符串"ABC",调用了append方法,下看
  18:  invokevirtual   #5; //Method append:
  21:  invokevirtual   #7; //Method toString:
  
  24:  astore_2
  25:  new     #3; //class java/lang/StringBuilder: 再创建了一个StringBuilder对象
  28:  dup
  29:  invokespecial   #4; 
  32:  aload_2
  33:  invokevirtual   #5; 先追加前面的字符串 "ABC"
  36:  ldc     #8; //String CDS : 追加第二个字符串"CDS",调用了append方法,下看
  38:  invokevirtual   #5; //Method java/lang/StringBuilder.append:
  41:  invokevirtual   #7; //Method java/lang/StringBuilder.toString:
  44:  astore_2
  
  45:  new     #3; //class java/lang/StringBuilder:再创建了一个StringBuilder对象
  48:  dup
  49:  invokespecial   #4; 
  52:  aload_2
  53:  invokevirtual   #5; //Method java/lang/StringBuilder.append: 先追加前面的字符串"ABC CDS"
  56:  ldc     #9; //String DSS:追加第三个字符串"CDS",调用了append方法,下看
  58:  invokevirtual   #5; //Method java/lang/StringBuilder.append:
  61:  invokevirtual   #7; //Method java/lang/StringBuilder.toString:
  END-第二种情况
  
  START-第三种情况
  64:  astore_2  
  65:  new     #10; //class java/lang/StringBuffer:创建StringBuffer对象
  68:  dup
  69:  invokespecial   #11; //Method java/lang/StringBuffer."<init>":()V
  72:  astore_3
  73:  aload_3
  74:  ldc     #6; //String ABC : 调用append方法
  76:  invokevirtual   #12; //Method java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
  79:  pop
  80:  aload_3
  81:  ldc     #13; //String DDD:调用append方法
  83:  invokevirtual   #12; //Method java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
  86:  pop
  END-第三种情况

 

小结一把:在JVM中,出现了第二种情况的,会默认创建一个StringBuilder对象来对字符串进行追加,注意,每一个"+="操作符,就会创建一个新的StringBuilder对象。这里就会造成挺大的内存浪费。

而用StringBuffer/StringBuilder这个对象来实现追加,在没调用其toString方法时,其对象还是可变的,一旦调用了toString的方法,就变成了不可变的String。



2. 触发器有几种?表和视图的区别
3.hibernate中导入(导出?忘记是导入还是导出了)大量数据时,会产生大量的对象,为了避免这一现象应该怎么做?
4.struts的作用, 被用做c层的原理
5.Spring的ioc的好处
6.事务的操作步骤(不大明白这个题目的意思),为什么会有事务


这里有某位仁兄( charles_wang8888)的解答,个人感觉其答得好:

第一题,创建了2个对象,由于编译器会吧等号右边的进行合并,所以他在常量区会建立一个 "12’的字符串,然后,在堆上创建一个对象叫a .
第 二题:日志类触发器吧,其他我不太清楚,表和视图的区别。表是在数据库的存储,视图是某些数据库语句,它不会对应数据库的存储。。表是内模式,视图是外模 式。
第三题:hibernate中导入大量对象,可以采用VO模式来优化网络交通
第4题:struts的作用是更好的反应出MVC模式, 具体你看书吧,这东西不太好回答,太开放了。
第5题目:SPRING 的IOC,控制反转,好处是通过配置来维持对象之间的关系,而不是让这些关系写死在代码中。这样对象之间的耦合程度被降低到最低
第6题:事务的操 作步骤。。不明白。威为什么要有事务。。可以吧多个步骤方在一起,让他们整体作为一个原子,要么一起成功,要么一起失败。

分享到:
评论
13 楼 XTU_xiaoxin 2010-08-05  
我就想知道,被投成新手帖会有什么后果?
12 楼 daqing15 2010-08-05  
ray_linn 写道
daqing15 写道
ray_linn 写道
跟便便器有关的怎么能当问题。。。 不是扯淡么,请问在java 1.2年代有几个对象啊

这位兄台真风趣,难道你现在用1.2编码啊!既然是曾经的了,又何必在这里讨论呢!

请问我信口回答是3个,你如果是那个傻蛋考官,评什么来判定我错???JRE也不是就1.6一个版本呢,也不是只有Sun一家。

对ray_linn这位仁兄的回答也过激了。讨论问题吗,不要扯到别的地方(**考官)!面题吗?用得着扯到N多个版本吗?都说是面题,要求的当然是一个人处理一个题目的想法和如何处理罢了!又不是要在实际项目中!你说是吧?
11 楼 chris_zley 2010-08-05  
你还是看看书吧。。。这个回答太经典了
10 楼 coolzyt 2010-08-05  
这种题确实无聊,编译器这个版本可能是这样优化,下个版本又是别的方式了。
像这种问题,回答他跟编译器有关,就可以了。毕竟能回答出这个答案的也算有一定水平了,考官可能也就想看看你的知识面,不用太钻牛角尖
9 楼 ray_linn 2010-08-05  
daqing15 写道
ray_linn 写道
跟便便器有关的怎么能当问题。。。 不是扯淡么,请问在java 1.2年代有几个对象啊

这位兄台真风趣,难道你现在用1.2编码啊!既然是曾经的了,又何必在这里讨论呢!



请问我信口回答是3个,你如果是那个傻蛋考官,评什么来判定我错???JRE也不是就1.6一个版本呢,也不是只有Sun一家。
8 楼 daqing15 2010-08-05  
bugmenot 写道
daqing15 写道
不知道是不是我使用的命令有问题,我编译出来并没有你如此之多的结果,呵呵!而且我只是截取了main里面的code,并没有全贴上去,而是去掉了一些不想关的一些代码(可能这个过程有误)我使用的命令是(Javap -c)!不知如此是否有误?请教了!等我检查过我自己当时所编译的代码再修改!
欢迎拍砖哈哈哈!

楼主大大请用javap -verbose
大大的确截取了main的code,但把一个表达式对应的字节码从中间给截断了。

new String("12")
这个表达式是:
   0:	new	#2; //class java/lang/String
   3:	dup
   4:	ldc	#3; //String 12
   6:	invokespecial	#4; //Method java/lang/String."<init>":(Ljava/lang/String;)V

字节码的new只创建了一个未初始化的对象,要到invokespecial指令调用构造器后才算是构造完成。"12"是这个新建对象的构造器的参数,来源是常量池,是该类被加载的时候就创建好的。

String a =
这个变量定义是:
   9:	astore_1


System.out
   10:  getstatic   #5; //Field java/lang/System.out:Ljava/io/PrintStream;


a
  13: aload_1


println调用
   14:  invokevirtual   #6; //Method java/io/PrintStream.println:(Ljava/lang/String;)V

呵呵,小生受教啦!用过那个java -verbose命令了,在main方法里面生成的应该是一样的吧!这次献丑咯,看来要下点功夫去熟悉一些VM 字节码!欢迎拍砖!!!
7 楼 mercyblitz 2010-08-05  
daqing15 写道
ray_linn 写道
跟便便器有关的怎么能当问题。。。 不是扯淡么,请问在java 1.2年代有几个对象啊

这位兄台真风趣,难道你现在用1.2编码啊!既然是曾经的了,又何必在这里讨论呢!



它说的并不是没有道理,不同版本的编译器优化不同。
6 楼 bugmenot 2010-08-05  
daqing15 写道
不知道是不是我使用的命令有问题,我编译出来并没有你如此之多的结果,呵呵!而且我只是截取了main里面的code,并没有全贴上去,而是去掉了一些不想关的一些代码(可能这个过程有误)我使用的命令是(Javap -c)!不知如此是否有误?请教了!等我检查过我自己当时所编译的代码再修改!
欢迎拍砖哈哈哈!

楼主大大请用javap -verbose
大大的确截取了main的code,但把一个表达式对应的字节码从中间给截断了。

new String("12")
这个表达式是:
   0:	new	#2; //class java/lang/String
   3:	dup
   4:	ldc	#3; //String 12
   6:	invokespecial	#4; //Method java/lang/String."<init>":(Ljava/lang/String;)V

字节码的new只创建了一个未初始化的对象,要到invokespecial指令调用构造器后才算是构造完成。"12"是这个新建对象的构造器的参数,来源是常量池,是该类被加载的时候就创建好的。

String a =
这个变量定义是:
   9:	astore_1


System.out
   10:  getstatic   #5; //Field java/lang/System.out:Ljava/io/PrintStream;


a
  13: aload_1


println调用
   14:  invokevirtual   #6; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
5 楼 daqing15 2010-08-04  
bugmenot 写道
daqing15 写道
String a = new String("1"+"2");
System.out.println(a);
反编译后的:
  Code:
   0:	new	#2; //class java/lang/String 在堆上创建了一个对象
   3:	dup
   4:	ldc	#3; //String 12最终的字符串值


楼主大大好忽悠哦!

public class Bugmenot {
    public static void main(String[] args) {
        String a = new String("1" + "2");
        System.out.println(a);
    }
}


编译结果明明是
Compiled from "Bugmenot.java"
public class Bugmenot extends java.lang.Object
  SourceFile: "Bugmenot.java"
  minor version: 0
  major version: 50
  Constant pool:
const #1 = Method	#8.#17;	//  java/lang/Object."<init>":()V
const #2 = class	#18;	//  java/lang/String
const #3 = String	#19;	//  12
const #4 = Method	#2.#20;	//  java/lang/String."<init>":(Ljava/lang/String;)V
const #5 = Field	#21.#22;	//  java/lang/System.out:Ljava/io/PrintStream;
const #6 = Method	#23.#24;	//  java/io/PrintStream.println:(Ljava/lang/String;)V
const #7 = class	#25;	//  Bugmenot
const #8 = class	#26;	//  java/lang/Object
const #9 = Asciz	<init>;
const #10 = Asciz	()V;
const #11 = Asciz	Code;
const #12 = Asciz	LineNumberTable;
const #13 = Asciz	main;
const #14 = Asciz	([Ljava/lang/String;)V;
const #15 = Asciz	SourceFile;
const #16 = Asciz	Bugmenot.java;
const #17 = NameAndType	#9:#10;//  "<init>":()V
const #18 = Asciz	java/lang/String;
const #19 = Asciz	12;
const #20 = NameAndType	#9:#27;//  "<init>":(Ljava/lang/String;)V
const #21 = class	#28;	//  java/lang/System
const #22 = NameAndType	#29:#30;//  out:Ljava/io/PrintStream;
const #23 = class	#31;	//  java/io/PrintStream
const #24 = NameAndType	#32:#27;//  println:(Ljava/lang/String;)V
const #25 = Asciz	Bugmenot;
const #26 = Asciz	java/lang/Object;
const #27 = Asciz	(Ljava/lang/String;)V;
const #28 = Asciz	java/lang/System;
const #29 = Asciz	out;
const #30 = Asciz	Ljava/io/PrintStream;;
const #31 = Asciz	java/io/PrintStream;
const #32 = Asciz	println;

{
public Bugmenot();
  Code:
   Stack=1, Locals=1, Args_size=1
   0:	aload_0
   1:	invokespecial	#1; //Method java/lang/Object."<init>":()V
   4:	return
  LineNumberTable: 
   line 1: 0


public static void main(java.lang.String[]);
  Code:
   Stack=3, Locals=2, Args_size=1
   0:	new	#2; //class java/lang/String
   3:	dup
   4:	ldc	#3; //String 12
   6:	invokespecial	#4; //Method java/lang/String."<init>":(Ljava/lang/String;)V
   9:	astore_1
   10:	getstatic	#5; //Field java/lang/System.out:Ljava/io/PrintStream;
   13:	aload_1
   14:	invokevirtual	#6; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
   17:	return
  LineNumberTable: 
   line 3: 0
   line 4: 10
   line 5: 17


}


main的行号表说,
  LineNumberTable: 
   line 3: 0
   line 4: 10
   line 5: 17


源码行号为3的Java代码在main的字节码里是
   0:	new	#2; //class java/lang/String
   3:	dup
   4:	ldc	#3; //String 12
   6:	invokespecial	#4; //Method java/lang/String."<init>":(Ljava/lang/String;)V
   9:	astore_1

ldc #3把String构造器的参数压到栈上而已,没创建新对象。

大大把代码从中间截断来忽悠人啊

不知道是不是我使用的命令有问题,我编译出来并没有你如此之多的结果,呵呵!而且我只是截取了main里面的code,并没有全贴上去,而是去掉了一些不想关的一些代码(可能这个过程有误)我使用的命令是(Javap -c)!不知如此是否有误?请教了!等我检查过我自己当时所编译的代码再修改!
欢迎拍砖哈哈哈!
4 楼 bugmenot 2010-08-04  
daqing15 写道
String a = new String("1"+"2");
System.out.println(a);
反编译后的:
  Code:
   0:	new	#2; //class java/lang/String 在堆上创建了一个对象
   3:	dup
   4:	ldc	#3; //String 12最终的字符串值


楼主大大好忽悠哦!

public class Bugmenot {
    public static void main(String[] args) {
        String a = new String("1" + "2");
        System.out.println(a);
    }
}


编译结果明明是
Compiled from "Bugmenot.java"
public class Bugmenot extends java.lang.Object
  SourceFile: "Bugmenot.java"
  minor version: 0
  major version: 50
  Constant pool:
const #1 = Method	#8.#17;	//  java/lang/Object."<init>":()V
const #2 = class	#18;	//  java/lang/String
const #3 = String	#19;	//  12
const #4 = Method	#2.#20;	//  java/lang/String."<init>":(Ljava/lang/String;)V
const #5 = Field	#21.#22;	//  java/lang/System.out:Ljava/io/PrintStream;
const #6 = Method	#23.#24;	//  java/io/PrintStream.println:(Ljava/lang/String;)V
const #7 = class	#25;	//  Bugmenot
const #8 = class	#26;	//  java/lang/Object
const #9 = Asciz	<init>;
const #10 = Asciz	()V;
const #11 = Asciz	Code;
const #12 = Asciz	LineNumberTable;
const #13 = Asciz	main;
const #14 = Asciz	([Ljava/lang/String;)V;
const #15 = Asciz	SourceFile;
const #16 = Asciz	Bugmenot.java;
const #17 = NameAndType	#9:#10;//  "<init>":()V
const #18 = Asciz	java/lang/String;
const #19 = Asciz	12;
const #20 = NameAndType	#9:#27;//  "<init>":(Ljava/lang/String;)V
const #21 = class	#28;	//  java/lang/System
const #22 = NameAndType	#29:#30;//  out:Ljava/io/PrintStream;
const #23 = class	#31;	//  java/io/PrintStream
const #24 = NameAndType	#32:#27;//  println:(Ljava/lang/String;)V
const #25 = Asciz	Bugmenot;
const #26 = Asciz	java/lang/Object;
const #27 = Asciz	(Ljava/lang/String;)V;
const #28 = Asciz	java/lang/System;
const #29 = Asciz	out;
const #30 = Asciz	Ljava/io/PrintStream;;
const #31 = Asciz	java/io/PrintStream;
const #32 = Asciz	println;

{
public Bugmenot();
  Code:
   Stack=1, Locals=1, Args_size=1
   0:	aload_0
   1:	invokespecial	#1; //Method java/lang/Object."<init>":()V
   4:	return
  LineNumberTable: 
   line 1: 0


public static void main(java.lang.String[]);
  Code:
   Stack=3, Locals=2, Args_size=1
   0:	new	#2; //class java/lang/String
   3:	dup
   4:	ldc	#3; //String 12
   6:	invokespecial	#4; //Method java/lang/String."<init>":(Ljava/lang/String;)V
   9:	astore_1
   10:	getstatic	#5; //Field java/lang/System.out:Ljava/io/PrintStream;
   13:	aload_1
   14:	invokevirtual	#6; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
   17:	return
  LineNumberTable: 
   line 3: 0
   line 4: 10
   line 5: 17


}


main的行号表说,
  LineNumberTable: 
   line 3: 0
   line 4: 10
   line 5: 17


源码行号为3的Java代码在main的字节码里是
   0:	new	#2; //class java/lang/String
   3:	dup
   4:	ldc	#3; //String 12
   6:	invokespecial	#4; //Method java/lang/String."<init>":(Ljava/lang/String;)V
   9:	astore_1

ldc #3把String构造器的参数压到栈上而已,没创建新对象。

大大把代码从中间截断来忽悠人啊
3 楼 daqing15 2010-08-04  
ray_linn 写道
跟便便器有关的怎么能当问题。。。 不是扯淡么,请问在java 1.2年代有几个对象啊

这位兄台真风趣,难道你现在用1.2编码啊!既然是曾经的了,又何必在这里讨论呢!
2 楼 ray_linn 2010-08-04  
跟便便器有关的怎么能当问题。。。 不是扯淡么,请问在java 1.2年代有几个对象啊
1 楼 beneo 2010-08-04  
"12"的时候就已经在常量区了

相关推荐

    java的时间空间…………

    首先,我们来讨论Java中的日期时间API。在早期的Java版本中,日期和时间的处理相对复杂,常常使用`java.util.Date`和`java.util.Calendar`类,但它们的API设计并不直观。Java 8引入了新的日期时间API(`java.time`包...

    java笔试题笔试题

    java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 java笔试题 ...

    Java办公自动化系统毕业论文

    1.1 引言…………………………………………………………………………………1 1.2 办公自动化背景……………………………………………………………………1 1.3我国办公自动化发展现状……………………………………...

    JAVA编程题全集(100题及答案)——直接打印

    JAVA 编程题全集知识点总结 本资源提供了一个完整的 JAVA 编程题全集,涵盖了大量的题目和经典的解法,非常适合刷学完基础、刷题前的知识总结与开拓。以下是从资源中提取的重要知识点: 1. JAVA 基础知识:资源中...

    国际互联网【计算机网络技术】

    3 .7 搜索引擎及其他使用…………………………………………………………………… (39) 3 .8 技能操作………………………………………………………………………………… (40) 本章小结 …………...

    基于java餐饮管理系统的设计与实现(开题报告+审批表+任务书+项目源码+外文中献+中期检查表).rar

    1 引言…………………………………………………………………………………… 1 2 系统技术介绍………………………………………………………………………… 2 2.1 JAVA程序语言. ………………………………………………...

    java期末试题,很好的,给你……

    Java 编程基础知识点总结 本次试题涵盖了 Java 程序设计的基础知识点,包括 Java 语言基础、变量和数据类型、运算符、控制流语句、方法和构造方法、数组、访问控制符等。 一、Java 语言基础 * Java 源程序文件的...

    JAVA编程题-全集(含答案).pdf

    Java 编程题-全集(含答案) 本资源汇集了多个 Java 程序设计题目,涵盖了 Java 基础知识、控制结构、函数设计、面向对象编程等多方面的知识点。 1. Java 程序设计总复习题 1:编写一个 Java 程序在屏幕上输出“你好...

    java面试题总结资料

    这份"java面试题总结资料"涵盖了多个Java核心领域的关键知识点,包括但不限于: 1. **基础语法**:理解基本的数据类型(如整型、浮点型、字符型和布尔型),变量的声明与使用,以及运算符的优先级。同时,要熟悉...

    上海交通银行 Java面试题(上机考)

    上海交通银行作为一家知名的金融机构,其在招聘Java开发人员时会设置一定的技术门槛,通过面试环节来检验候选人的编程能力和对Java技术的理解。这道Java面试题是一个上机考核题目,意味着应聘者需要实际编写代码并...

    毕设项目:医药管理系统设计(JAVA+论文+源代码)

    摘 要……………………………………………………………………Ⅰ ABSTRACT………………………………………………………………Ⅱ 1 绪论…………………………………………………………………………… 1.1办公自动化的...

    JAVA试题题库与答案

    6. JSP指令标记:……%&gt;是JSP指令标记,用于导入包或设定页面属性,第6题答案为C。 7. 引入ArrayList:在JSP中使用ArrayList,需要通过&lt;%@ page import="java.util.*" %&gt;引入,所以第7题答案为C。 8. JavaBean规范...

    《JAVA面试题》--Java面试总结,持续更新…….zip

    十余年JAVA从业经验,精通JAVA技术体系,有志于做JAVA技能提升的朋友可与我联系,交个朋友 十余年JAVA从业经验,精通JAVA技术体系,有志于做JAVA技能提升的朋友可与我联系,交个朋友 十余年JAVA从业经验,精通JAVA...

    java笔试题,这个是汇总经过本人筛选的………………

    根据给定文件的信息,我们可以提炼出以下几个重要的Java知识点: ### 1. 访问修饰符:public, private, protected, 默认(friendly) 在Java中,类成员(如方法、变量等)可以使用不同的访问控制级别来限制它们的...

    java软件工程师面试题

    这是我找java软件工程师时候,收集的java面试题,汇集了主要的试题,实际我在笔试中有80%的内容和这里面的是重复的.希望能帮助找java工作的您. EJB方面.doc java.doc Java中文问题详解(高手必读).txt Java中文问题...

    JAVA面试题针对三年内经验

    java web面试题.pdf java就业面试题宝典.rar Java面试题.pdf 51CTO下载-程序员面试宝典(全).pdf java华为面试题.pdf java(软件)工程师面试题大全-100%公司笔试题你都能碰到几个 达内笔试题集答案集.pdf 面试题集(全)...

    java面试题总结 下载

    Java面试题是每个Java开发者在求职过程中必须面对的挑战,涵盖的范围广泛,涉及语言基础、数据库、并发编程、设计模式等多个领域。这份"java面试题总结资料"应该包含了作者精心整理的各类常见问题和解答,旨在帮助...

    java基础知识概括……有利于java初学者

    Java是一种广泛使用的面向对象的编程语言,其基础知识是学习Java编程的基石。本文将深入探讨Java的几个核心概念,特别是针对初学者的重点内容。 首先,我们来看字符串处理。在Java中,`String`类提供了丰富的操作...

    Java面试笔试题大汇总(最全+详细答案)

    Java作为一门广泛使用的编程语言,其面试笔试题涵盖了众多领域,包括基础语法、面向对象、集合框架、多线程、异常处理、IO流、网络编程、数据库操作、设计模式、JVM优化等。以下是对这些知识点的详细阐述: 1. **...

Global site tag (gtag.js) - Google Analytics