1.int这种叫基本数据类型,Integer这种叫包装类,把基本数据类型变为包装类类型的过程叫做装箱,把包装类类型变为基本数据类型的过程叫做拆箱,而其中又分为自动装箱/拆箱和显示装箱/拆箱
2.next()方法一定要读取到有效字符后才可以结束输入,会自动去掉输入有效字符之前遇到的空格键,Tab键或Enter键等空白符,nextLine()方法的结束符只是Enter键,它会返回Enter键之前的所有字符
3.如果两个操作数都是整数,那么除数不能为0,但是如果两个操作数至少有一个是浮点数,那么此时允许除数为0或0.0,此时会得到Infinity(正无穷大)或-Infinity(负无穷大),而任何数对0或0.0取余得到的结果是非数NaN(Not a Number)
4.自加1或自减1运算符不能用于表达式,只能用于简单变量,例如++(x+1)就有语法错误
5.&逻辑与(非简洁运算符)和&&简介与之间的区别:&即便左边式子为false但仍然会计算右边的式子,&&只要左边式子为false就不会再计算右边的式子
6.C语言中,二维数组定义时必须有列,可以无行,而Java中,必须有行,可以无列
7.比较非对象时,==比较的是两个的地址,equals比较的是两个的内容,如果比较的是对象,那么==和equals都是比较两个对象的地址
8.<<左移右边补零,>>右移补符号位,>>>为无符号右移,左边补零,不存在<<<
9.float,double,long,boolean这四种数据类型不能作为switch类型的参数
10.foreach格式——for(type element:array){……},如果是二维数组的遍历,那么最外层foreach循环中type为一维数组
11.String s1="abc",s2="abc",这两个字符串都指向同一个地址(相当于C语言中的常量字符串,即如果原来存在一个字符串,后面又有一个字符串等于该字符串的内容,那么就不会再申请空间创建新的字符串,而是会直接指向原来存在的字符串),而String s3=new String("abc")和String s4=new String("abc"),则是两个不同的地址,因为new关键字就是创建一个新的对象、
12.String是具有不可变性的,也就是说我们String类里面的一系列修改字符串的方法的本质都是通过new创建了一个新的字符串,改变这个新对象,然后返回这个新的字符串的地址
13.String不可变的根本原因是因为其底层代码中,用于存储的字符数组被final修饰了,即该数组中的值不能被修改
14.final修饰类表示该类不能被继承,final修饰引用对象表明该引用变量不能被修改,但是引用对象指向的地址可以被改变
15.String设计成不可变的好处是:1.方便实现字符串对象池,如果String可变,那么对象池就需要考虑写时拷贝的问题了。2.不可变对象的线程是安全的。3.不可变对象更方便缓存hash code,作为key时可以更高效的保存到HashMap中
16.对String直接+=字符串这种修改方式效率非常底下,因为中间创建了好多临时对象,所以我们建议使用StringBuffer和StringBuilder
17.String,StringBuffer,StringBuilder的区别:1.String的内容不可修改,StringBuffer和StringBuilder的内容可以修改。2.StringBuffer和StringBuilder大部分功能是相似。3.StringBuffer采用同步处理,属于线程安全操作;StringBuilder未采用同步处理,属于线程不安全操作
18.静态方法不可以直接访问类中的任何成员,只能访问static成员变量或调用static成员方法
19.静态方法中不能使用this或super,因为this是代表调用该方法的对象,但静态方法不需要对象来调用,是属于整个类的。
20.无论是自定义的类,还是java内置的类,所有类均继承自Object类
标签:java,String,对象,StringBuffer,数据类型,细节,期末,StringBuilder,字符串 From: https://blog.csdn.net/2301_80369371/article/details/139400081