1.类型转换
double k;
k = 3.14;
System.out.println(k);
output:3.14
int k;
k = 3.14;
System.out.println(k);
Error! Cannot convert from double to int!
但是在C编译器中是可以通过的
java不允许执行丢失精度的操作
int k;
k = (int)3.14;
System.out.println(k);
强制转换,在java中是可以通过的
2.boolean
boolean flag;
flag = true;
System.out.println(flag);
C++中会输出1,但java输出true
boolean flag;
flag = 1;
Error!Cannot convert from int to boolean!
java对于整形和布尔型的转换是很严格的
boolean flag;
flag = (boolean)1;
Error!Cannot cast(强制转换) from int to boolean!
int k;
k = 10;
if(k == 10)
System.out.println("Ten");
如果写成k = 10,C编译器指挥报warning,而java编译器的括号中必须放boolean
3.引用
java取消了指针,采用引用,其实质就是地址
原始类型(Primitive Types):int double float char(java中是两个字节,unicode) boolean
引用类型:自己定义的类等
C++:
Student *pzs = new Student();
java:
Student zs = new Student();
虽然形式不一样,但是本质是相同的,完全可以把zs看作是一个指针(pointer),只不过在java中称为引用(reference)
java:
Student zs = new Student();
//做了一次动态分配,把空间的地址给了zs
//如果是自己定义的类,那么zs只能用指针,用不了对象,对象只能靠new
//因此从形式上取消了指针
Student ls = new Student();
zs.sid = 1001;
ls.sid = 1002;
zs = ls;
ls.sid = 1005;
System.out.println(zs.sid);
output:1005
C++:
Student zs, ls;
//只是两个对象
zs.sid = 1001;
ls.sid = 1002;
zs = ls;
ls.sid = 1005;
cout << zs.sid << endl;
output:1002
Student *zs, *ls;
zs = new Stduent();
ls = new Student();
zs->sid = 1001;
ls->sid = 1002;
zs = ls;
ls->sid = 1005;
cout << zs->sid << endl;
output:1005
4.new
通过new来创建对象,但是如果当对象不再需要被使用的时候,不像C++需要通过delete来删除。java存在垃圾回收机制,当发现有东西确实没有用的时候,会进行回收(但比较耗资源)
5.数组
C++:
int array[10];
有10个整形元素的数组
java:
数组是一个比较大的东西,所以不是原始类型,而是引用型,既然引用型,应该这样写:
int []array = new int[5];
//左边定义了一个整形数组的引用
int []array = new int[10];
array = new int[5];
6.for
int []array = new int[10];
for(int i = 0; i < 10; i++) array[i] = i;
for(int x : array) System.out.println(x);
7.重载
public class Test{
public static int add(int x, int y){
return x + y;
}
public static int add(int x, int y, int z){
return x + y + z;
}
public static void main(String[] args){
System.out.println(add(1, 2, 3));
}
}
重载规则跟C++是没有区别的,重载函数名字是一样的,但参量不一样,要求类型/顺序/个数不一样
public class Test{
public static int add(int x, int y){
System.out.println("INT");
return x + y;
}
public static double add(double x, double y){
System.out.println("DOUBLE");
return x + y;
}
public static void main(String[] args){
System.out.println(add(1, 3));
System.out.println(add(1.1, 3.3));
System.out.println(add(1, 2.2));
//C++中会报错,有二义性
//而java中会执行double,因为java是不能直接把2.2转换为int,只会把1转成double
//如果把double函数注释掉,C++是没问题的,因为没有了二义性,但java会报错,参数不匹配
}
}