1. char数组:Java 不能使用char name[] = “12”;为name数组赋值;只能使用char[] name = {‘1’,‘2’}。

2. 布尔类型:java中的布尔类型声明为boolean,C++中的布尔类型声明为bool,都保留了true和false,NULL;boolean类型的值只能进行等于或者不等于的比较,因为true和false是无序的(true>false是没有意义的)。

3. main 方法不同

main()可以作为与控制台交互的方法,在运行前可以写入Sring[] Args的内容,并在main中使用

4. C++中没有byte数据类型的,而java中有,占一个字节,范围是-128~127;Java舍弃了指针(但是有引用)、运算符重载、多重继承。

5. 自动转换(自动类型提升)规则:(不包含boolean类型)

① 两种类型兼容

② 目标类型比源类型大(如int = byte)

③ byte,short,char->int->long->float->double->String

实型数据和整型数据与char类型之间转换是编码之间转换的关系(根据编码的不同,转换后的值不同)

Ps:有long到double的自动转换,而没有double到long的自动转换但是c++可以

自动转型的注意点:

1) 一般的整数不写类型一般默认为int型的,如:

long number = 123321;//这里有自动转换,但如果是过大整数:long number = 123321123321123,就会报错,必须使用long number = 123321123L;

2) 带小数点的数会默认为double型的,如果写:

float number = 12.3; //就会报错,改成

float number = 12.3F;

3) 当容量小的数据类型与容量大的数据类型做运算的时候,会自动提升为大的数据类型

6. 强制类型提升:

转换方式为:(有时候会有精度损失:范围大的数据强制转换为小数据会有精度损失)

public class Test{
	public static void main(String[] Args){
		long a = 15;
		int b = (int)a;
	}
}

7. 从键盘获取数据:

public class Test{
	public static void main(String[] Args){
        //方法一
		Scanner javaIn = new Scanner();
        char a = javaIn.next().charAt(0);
        //方法二
        BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));
        try{
            System.out.println(buffer.read());
        }catch(IOException e){
            throw new RuntimeException
        }
	}
}

8. 其他方法调用事项注意:

因为主方法是public static void main(String args[])

所以在调用其他方法(不是同一个类的)时候必须也用static的方法

第二种方式就是采用new分配:

主类的名称合法字符名 = new 主类的名称使用的时候:

合法字符.被调用方法名

9. 使用 foreach 循环迭代数组元素时,并不能改变数组元素的值,因此不要对 foreach 的循环变量进行赋值。

10. 用break实现goto的功能: 

public class Test{
	public static void main(String[] Args){
        label: for (int i = 0; i < 10; i++) {
			for (int j = 0; j < 8; j++) {
				System.out.println(j);
				if (j % 2 != 0) {
					break label; //标签名
				}
			}
		}
	}
}

ps:continue和break都可以带上标识符:

continue label是结束标签处的本次循环

break label是结束标签处的循环结构

注意label一定要标记在循环控制结构,不能在其他地方

11. String类型说明

String是引用类型,不是基本数据类型,没有从String类型到char类型的转换构造函数,所以不能:char[] a = “123”;

String可以和8个基本数据类型做运算,并且运算只能做连接运算“+”;

12. Char型和string类型的使用说明:

1) System.out.println(‘a’+1+“hello”):

98hello

System.out.println(“hello”+‘a’+1):

helloa1

System.out.println(“hello”+1+2):
hello12

2) String name = “123”;--》必须是数字才能将String转换为int

int nam = (int)name;--》是错误的

int nam = Integer.parseInt(name);--》是正确的

3) short a = 15;a = a - 15;(错误)

a -= 15;(正确)

a = (short)(a - 15);(正确)

String a = 数字 + “”;编译通过,String a = 数字;(不通过)

4) String 类型转换为int:

int num = Integer.parseInt(String);

13. 输入的方法:
char a = (char)System.in.read();返回的是一个键盘输入的符号的ascii码

14. 逻辑运算符和短路运算符的关系:

& 和 &&:

相同点:
二者的逻辑结果一样;

不同点:

如果&&前面的逻辑是false,则不会运行&&之后的表达式,如果是true就会运算后面代码块;(||与之相反)&(|)前面的逻辑不论是false还是true,都会运行&(|)之后的代码块:

比如这两种运算符之后的表达式是:(false & (a++ > 0));&会进行a++,而换成&&不则会进行;

15. new运算符与java的垃圾回收机制:

当一个对象不再被引用的时候,会被认为是没有存在的必要,其内存空间就会被释放;对于基本数据类型不需要用new赋予空间,是因为它们不是对象。(java没有析构函数,因为垃圾回收机制就可以替代它的工作)