Java和C++的区别是什么?
Java和C++都是面向对象的语言,都支持继承、封装,多态。但是也有不同的地方。
1.Java的类是单继承的,C++的类是可以多继承的,但Java的接口可以多继承。
2.C++支持方法的重载和操作符的重载,但是Java仅支持方法的重载,因为操作符的重载增加了复杂性,与Java最初的设计思想不符。
3.Java有内存的自动管理垃圾回收机制,不需要手动释放内存,但是C++需要手动释放没有用的内存
4.Java不提供指针来直接访问内存,这使得程序内存更加安全。
标识符和关键字的区别?
标识符就是给变量、方法,类起的名字,但是有一些标识符,Java已经赋予了特殊的含义,这些被赋予特殊含义的标识符就叫关键字。(如自家开了一家店,需要给店起一个名字,起的这个名字就是标识符,但是不能叫警察局,因为警察局是关键字。)
位移运算符:
带符号右移(>>)、左移(<<)、无符号右移(>>>)
由于 double
,float
在二进制中的表现比较特殊,因此不能来进行移位操作。
移位操作符实际上支持的类型只有int
和long
,编译器在对short
、byte
、char
类型进行移位前,都会将其转换为int
类型再操作。
对于位移运算,如果位移的位数超过了数值所占有的位数会怎么样?
对于int类型左移/右移大于32位,会先对位移的位数做求余操作,再进行位移操作,比如需要位移32位,32%32=0,就表示不需要进行位移操作;需要位移42位,则相当于位移10位。如果是long类型,除数就改为64。