码迷,mamicode.com
首页 > 其他好文 > 详细

2015-04-10一些知识点

时间:2015-04-10 20:02:22      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:

  今天看到几个有意思的小程序

package com.lk.A;

public class Test1 {
    static{
        int x = 5;//在第一次被载入JVM时运行,但由于是局部变量,x=5不影响后面的值
    }
    static int x,y;
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        x--;
        myMethod();
        System.out.println(x + y++ + x);//1+0+1=2
    }
    public static void myMethod(){
        y = x++ + ++x;
        //此处:首先x=-1,x++后x还是-1,但是执行后x变为0,走到++x时,x已经变为0,在进行++运算,得到x=1
        //因此算式应该是y=-1+1=0;
    }
}
package com.lk.A;

public class Test2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int i = 0;
        System.out.println(i+‘0‘);//int+char类型自动向上转型至int型,因此程序输出48
        //即(int)‘0‘=48   i+48 = 48
    }

}
package com.lk.A;

public class Test3 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int j = 0;
        for(int i = 0;i<100;i++){
            j = j++;
        }
        System.out.println(j);//此时程序输出0
        //因为在执行j=j++时,Java在j++使用了中间缓存变量机制。其等效于:
        //int temp = j;
        //j = j+1;
        //j = temp;
        //但是如果用j = ++j时,程序会输出100;但是在j= ++j这句话会出现警告
    }

}

   4、Java中,简单数据类型由低到高:(byte,short,char)-int-long-float-double

        低级类型为char型,向高级类型(整型)转换时,会转换为对应的ASCII码值。

        对于byte,short,char三种类型而言,他们是相同级别的,因此,不能相互自动转换,可以使用强制类型转换。

   5、对于高级类型向低级类型转换时除了用强转,还可以用包装类,但是都会损失精度。同时简单类型的变量转换为相应的包装类,可以利用包装类的构造函数。

package com.lk.A;

public class Test4 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        double d1 = 100.00;
        Double D1 = new Double(d1);
        int i1 = D1.intValue();
        System.out.println(i1);
        double d2 = 101.00;
        int i2 = (int)d2;
        System.out.println(i2);
    }

}
100
101

    6、字符型变量转换为数值型变量实际上有两种:一种是将其转换成对应的ASCII码;另一种是转换关系,例如,‘1’就是数值1,而不是其ASCII码

        方法:

package com.lk.A;

public class Test5 {
    public static void main(String[] args) {
        Character C = null;
        System.out.println(C.getNumericValue(‘3‘));
        char c = ‘3‘;
        System.out.println((int)c);
    }
}
3
51

    7、+=默认不检查数据类型,例如

package com.lk.A;

public class Test5 {
    public static void main(String[] args) {
//        short s = 1;
//        s = s+1;//会报错,int不能不能直接赋值给short
short s1 = 1;
        s1 = (short)(s1+1);//可以通过强转 short s = 1; s += 1;//不报错 System.out.println(s); } }

 

package com.lk.A;

public class Test6 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int a = 5;
        System.out.println((a<5)?10.9:9);//Java这是会根据运算符的精度类型进行自动类型转换
        //由于前面有一个10.9,因此后面的9也会自动变成9.0。因此,输出的是9.0
    }

}

 

2015-04-10一些知识点

标签:

原文地址:http://www.cnblogs.com/luankun0214/p/4415353.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!