Java在线编译:https://tool.lu/coderunner/?id=7Gt
第一章 Java语言概述
- “java编译器将源文件编译为的字节码文件是机器码”这句话正确吗?
答:不正确 - java应用程序的主类必须含有怎样的方法?
答:含有main方法 - “java应用程序必须有一个类是public类”这句话正确吗?
答:不正确,只能有一个public类 - “java Applet程序的主类必须是public类”这句话正确吗?
答:正确,因为java Applet主类必须是Applet类的子类并且是public的类 - 请叙述java源程序的命名规则。
答:与public的类同名。 - 源文件生成的字节码文件在运行时都加载到内存中吗?
答:非也,动态随需要运行才加载。 - 面向对象的程序设计语言有那些基本特征?
答:封装;继承;多态性。 - 在Java程序中有多个类文件时,用Java命令应该运行那个类?
答:具有main方法的类
第二章 基本数据类型和数组
第三章 运算符、表达式和语句
1.下列System.out.printf的结果是什么?
1 | int a=100,x,y; |
运行结果为:101,101,100
解:为方便理解我们将表达式调整(学会方法)
1 | public class ceshi { |
运行结果为:202,303,100
本题的知识点:
- 前缀自增自减法(++a,–a): 先进行自增或者自减运算,再进行表达式运算。
- 后缀自增自减法(a++,a–): 先进行表达式运算,再进行自增或者自减运算
计算过程如下:1
2
3
4
5
61、x=2*++a
先a自增,a=a+1=100+1=101
再计算x表达式,x=2a=2*101=202
2、y=3*a--(注意此时a的值已经变为101了)
先计算y表达式,y=3a=3*101=303
再将a自减,a=a-1=101-1=100
故输出结果为202,303,100
8.下列for语句的执行结果是什么?
1 | for(int i=1;i<=4;i++) { |
执行结果为:abbcdd
解:可运行代码如下
1 | public class ceshi { |
本题的知识点: 若当前匹配成功的case不存在break,则从当前case开始,依次返回后续case的返回值,直到遇到break,跳出判断。1
2
3
4
5
6
7
81. i=1 时,case 1 匹配成功, 无break
输出为:a,b
i=2 时,case 2 匹配成功, 遇 break
输出为:b
i=3 时,case 3 匹配成功, 无 break
输出为:cd
i=4 时,case 2 匹配成功, 遇 break
输出为:d
故for语句的执行结果为:abbcdd
第四章 类与对象
第五章 继承、接口与泛型
第六章 字符串和正则表达式
- 对于字符串
String s1=new String(“ok”);
String s2=new String(“ok”);
写出下列表达式的值
s1==s2 false
s1.equals(s2) true
解:
问题:==与equals()的区别:
- ==: 是否指向了一个地址即一个对象?
- equals(): String类重写了equals()方法,引用所指的对象的内容相同?
1 | public class zfc { |
https://www.cnblogs.com/aspirant/p/9193112.html
new String() 创建的字符串不是常量,不能在编译期就确定,所以new String() 创建的字符串不放入常量池中,它们有自己的地址空间。
String s2 = new String(“OK”); 定义一个S2引用,指向对象new String(“abc”);这会在堆内存中再开一个对象,此对象也是志向常量池中的”abc”;但对象各是各,它们的堆内存地址可不样。
String s2 = new String(“OK”);根据”OK”这个String对象再次构造一个String对象,在堆中重新new一块儿内存,把指针赋给栈,
将新构造出来的String对象的引用赋给s2。 因此,只要是new String(),则栈中的地址都是指向最新的new出来的堆中的地址,