Java学习笔记之Java特性

 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会报错,参数不匹配
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值