为什么说java的String相加减效率低?
因为string是不可变的变量,采用不可变的设计模式保证线程安全,所以每次都string进行加减操作,都会生成一个新的对象,多次加减后就会产生很多新对象,占用内存,影响程序性能,所以对于字段串的加减操作,一般采用stringBuffer和stringBuilder,其中stringBuffer是线程安全,stringBuilder是线程不安全的,stringBuffer对于每个方法采用synchronized来保证线程安全。
累计运算符的运算规则?
、运算符的不同分类:
1) 算数运算符
2)赋值运算符
3)比较运算符|关系运算符
4)逻辑运算符
5)条件运算符
6)位运算符
2、算术运算符
+ 1)正号
2)加法运算
3)字符串的连接符
当+左右两边一旦出现字符串,+作为字符串的连接符使用,最后会把左右两边的数据拼接成一整个字符串得到结果
- :1)减号2)减法运算
* :乘号
/ : 除号
% :模以 取模 求余数
操作1%操作数2 当操作数1<操作数2时候,结果为操作数1
3、赋值运算符
基础赋值运算符 = java中唯一一个自右向左运算的符号
扩展赋值运算符 (算数运算符+基础赋值运算符)
java中的int类型的线程安全,AtomicInteger和violate?
AtomicInteger,一个提供原子操作的Integer的类。在Java语言中,++i和i++操作并不是线程安全的。在使用的时候,不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。而volatile修饰,只是保证每次取a的值都不是从缓存中取,而是从a所真正对应的内存地址中取

