11.String与StringBuffer的区别
String str = "abc";
str.replace('a','d');
Syso(str);//abc
StringBuffer sbf = new StringBuffer("abc");
sbf.replace(0,1,"de");
Syso(sbf);//debc
str1 + str2 //String字符串拼接
sbf1.append(sbf2) //StringBuffer字符串拼接 且效率更高
复制代码
** String类是一个不可变类,一旦赋值,就不能被修改。StringBuffer是可变的字符串。字符串使用+进行追加,而StringBuffer可以使用append方法进行追加,大部分情况下,后者效率更高。**
12.StringBuffer与StringBuilder有什么区别?
** StringBuilder是JDK5增加的一个新类,功能几乎与StringBuffer相同。区别在于StringBuffer是线程安全的,多个线程同时操作StringBuffer时,能保证同步。而StringBuilder是线程非安全的。如果只在单线程环境下使用,StringBUilder的效率会更高。**
13.private修饰符
题目:下面代码哪行会出现编译错误,为什么?
public class TestPrivate{
void doSomething(){
private String s = "";
int I = s.length();
}
}
//非法的修饰符
复制代码
** 因为字符串s是一个在方法中定义的局部变量。局部变量不能使用权限访问修饰符。 权限访问修饰符包括public、protected、默认、private,其中类只能用public或者默认修饰,而类的属性、方法、构造方法可以使用四个中的任意一个修饰。方法的局部变量不能使用任何权限修饰符。**
14.do while循环及++、--
public static void main(String[] args){
int a = 1;
int b = 10;
do{
b-=a;
a++;
}while(b--<0);
Syso("a="+a+" b="+b);
}
a=2,b=8
b--<0 先把b的值取出来比较,再进行--操作
do while 至少执行一次
复制代码
** do while循环最少也会执行一次循环体,知道while条件为false时退出。本题中,执行一次循环体后,循环就退出。其中a自加一次,值为2。b在循环体中被修改为10-1=9,在while中执行b--,在进行一次自减,因此为8.需要注意的是++、--不管在变量的前还是后,其实对变量本身的值都是进行加1或减1,区别是表达式的返回值不同。**
15.?:=操作符
题目:
int a = 5;
Syso("返回值为:"+((a<5)?9.9:9);
9.0
复制代码
** ?:是Jav中唯一的三元操作符,类似简单的if-else逻辑。如果条件返回true,则返回第一个值,否则返回第二个值。**
16:float与double
double d = 1.0;
float f = 1.0;//错误
float f = (float)1.0 / 1.0f;
复制代码
** 浮点数默认是以64位的double类型存储,而float是32位的。高精度的数值赋值给低精度的变量会发生编译错误。可以使用后缀f,或者使用(float)进行类型转换。**
17.用==比较基本数据类型
Syso(0.3 == 0.3f);
Syso(0.5 == 0.5f);
复制代码
** false true 用==比较基本数据类型,比较的是数值的二进制值。小数默认是以64位的double类型存储,因此0.3和0.3f的二进制值不同,而0.5和0.5f的二进制相同。**
18.用char存储汉字
题目:Java中的char类型,能存储汉字吗?
复制代码
** Java默认使用Unicode编码,一个汉字需要两个字节。char类型是16位,双字节,表示一个字符,因此可以存储一个汉字。但是不能存储两个字母。**
19.逻辑运算符
题目:&与&&有什么区别
&与&&都是Java中的逻辑“与”运算符,当操作符两边的表达式都是true的时候,返回true,否则返回false。区别在于&&存在短路问题,也就是说,当&&左侧的表达式返回为false,就不再运算右侧的表达式,直接返回false。
复制代码
20.移位运算符
题目:计算2*8,哪种方法效率最高?用简单代码表示。
r1 = m<<3;
r2 = m * 8;
复制代码
** Java语言中有三个移位运算符,分别是左移<<、有符号右移>>、无符号右移>>>。左移一位相当于乘以2,右移一位相当于除以2,用移位运算符进行运算,是直接对二进制进行运算,效率较高。**