目录
2.Java号称“一次编译、处处运行”(Write Once, Run Anywhere!),怎么理解这句话?为使编译好的程序能运行,需先在操作系统安装什么?
3.对比c版本的与Java版本HelloWorld代码,有何不同?
4.怎么比较两个字符串内容是否相同?可以直接用==吗?为什么对基本数据类型可以直接使用==?对引用数据类型不行?
5.x是Integer类型,1是int类型,为什么他们可以相加,使用了什么技术?z是int,x与y是Integer类型,却可以直接将x + y 赋给z,使用了什么技术?
6.下面这段代码,本意是要达到什么效果?能运行成功吗?为什么?怎么获得String的trim()方法的说明?
一:课前问题列表
1.使用Java能编写哪些类型的程序?试举至少两个例子。
Java SE(基础):用于桌面应用开发 如:电脑里的计算器、IDEA。
Java ME(凉了):用于嵌入式电子设备或小型移动设备 如:Android应用程序、iOS应用程序、控制系统等。
Java EE:用于Web网站开发(这个领域的神) 如京东、淘宝网站。
2.Java号称“一次编译、处处运行”(Write Once, Run Anywhere!),怎么理解这句话?为使编译好的程序能运行,需先在操作系统安装什么?
“一次编译、处处运行”意味着只要在Java中编译了程序,程序可以在所有支持Java的操作系统上(如Windows、Linus等等)运行。这是由JVM(Java虚拟机)实现的,所以JVM是在目标操作系统上安装和运行Java程序所必需的部分,因为要使编译好的程序能够运行,所以要包含运行Java程序所需的库文件,所以需要安装包含了JVM和所需的库文件的JRE,即Java运行时环境。
3.对比c版本的与Java版本HelloWorld代码,有何不同?
C版本需要导入头文件、编写main函数和打印语句,需要手动编译并生成可执行文件,然后在命令行中运行。
Java版本只需编写一个类,包括类名和打印语句即可。可以直接在命令行中运行,Java虚拟机会自动编译和执行代码。
4.怎么比较两个字符串内容是否相同?可以直接用==吗?为什么对基本数据类型可以直接使用==?对引用数据类型不行?
Integer x = Integer.valueOf("10");
Integer y = x + 1;
int z = x + y;
在Java中,比较两个字符串内容是否相同应使用equals()方法,或者使用equalsIgnoreCase方法,前者区分大小写,后者不区分大小写。不可以直接用==,因为这是因为==在这里比较的是存放引用的地方的异同,而不是字符串的内容,达不成我们想要实现的目的。因为==在基本数据类型比较的是数据值,所以可以直接使用,而引用数据类型比较的存放引用的地方,如下图
String s=new String("abc");
String a="abc";
因为s是由new创建出来的,地址在堆区,而a是直接赋值的,地址在栈区。即使内容相等,但因为存放引用的地方不同,所以==出来的结果是false。
5.x是Integer类型,1是int类型,为什么他们可以相加,使用了什么技术?z是int,x与y是Integer类型,却可以直接将x + y 赋给z,使用了什么技术?
x与1进行计算时,会进行自动装箱和拆箱操作。自动装箱是将基本类型转换为对应的包装类,而自动拆箱是将包装类转换为基本类型。在x + 1这个表达式中,x会自动拆箱为int类型,然后进行加法运算。而在将x + y赋给z时,y会自动拆箱为int类型,并且z是int类型,所以是可以的。
6.下面这段代码,本意是要达到什么效果?能运行成功吗?为什么?怎么获得String的trim()方法的说明?
String x;
int length = x.length();
System.out.println(x.trim());
本意是要获取字符串x的长度,并打印去除前导和尾部空格后的字符串。当时变量x没有被初始化(没有赋予值),所以在调用x.length()方法时会出现错误。所以代码无法运行成功。
查看String的trim()方法的说明,可以查找JDK文档,通过索引可以快速查找。
总结
以上就是对应01周预习作业1.3课前问题列表的回答