注意java.lang包下的类String类和八个包装类,在使用中不需要导包。而且不需要创建对象,可以直接赋值。
直接用双引号创建不用new 但是系统帮助你new了,这样的创建字符串对象在字符串常量池中 ,并且str1保存的是一个地址值。如果多个String类型常量内容相同 其保存的就是常量池中的同一个对象的地址值。拓展:只要new 就会在堆中开辟出一片空间。
常量池不会存放相同值的字符串对象地址值。这样节省资源空间。
字符串拼接的时候,如果包含变量的表达式,产生的是堆中的空间,相当于new。
常量字符串拼接是在常量池中生成的。
1.我们在编译器(IDE)中编写.java文件
2.编译器自动将 .java文件编译成 .class文件 (字节码文件)
3.jvm自动将 .class文件解释成机器码 然后jvm操作指令集执行代码
java的编译器分平台 但是编译成的字节码文件不分平台 只看你有没有我要的虚拟机 有的话就能执行
所以java具备一次编译,到处运行的特点
String.replace,替换完会生成新字符串,原来的字符是不变的。
三元运算符要求必须有返回值,即表达式1和表达式2要求必须能return,所以不能在表达式1或表达式2中书写输出语句等。基于此,三元运算符不能独立成句,它就如同一个变量,可以出现在方法参数中、用在赋值语句=的右侧等地方,总之不能独立成句