day2 数据类型转换和变量

数据类型转换

类型转换

强制转换

格式(目标类型)变量名;

public class helloworld {
    public static void main(String[] args) {
    int i = 128;
    byte a = (byte)i;//i=128,将类型int的i强制转换为byte
    System.out.println(i);
    System.out.println(a);//导致内存溢出
    }

输出结果为128,-128,因为byte的范围是-128至127,超了,所以应避免内存溢出的情况

自动类型转换

public class helloworld {
    public static void main(String[] args) {
    int i = 128;
    double a = i;
    System.out.println(i);
    System.out.println(a);
    }输出结果为128,128.0。这是一个低到高的转换(注意上图)。
    floatdouble转为int的时候会把小数点后面直接消掉,甚至不带四舍五入。
public class helloworld {
    public static void main(String[] args) {
    char c = 'a';
    int d = c+1;
    System.out.println(d); 结果为98
    System.out.println((char)d);结果为b
    }
}在类型如果char直接加int类型会被自动转换,这就是我们说的自动转换。

public class helloworld {
    public static void main(String[] args) {
    int money = 1000000000;
    int years = 20;
    int total = money*years;
    long total2 = money*years;
    System.out.println(total);输出-1474836480
    System.out.println(total2);输出-1474836480
    这俩都溢出了,为啥long也会溢出呢?因为他是先算成int再变为long,在转换之前已经出问题了。
    System.out.println((long)money*years);输出200_0000_0000好了,在算之前先转换就没问题了。
    } 
}

!!注意!!

  1. 不能把布尔值进行转换。
  2. 不能把数据类型转为不相干的类型。
  3. 高往低需要进行强制转换。
  4. 转换时可能存在内存溢出、精度问题。

变量

public class helloworld {
    public static void main(String[] args) {
    int money = 1000000000;
    String name = "王小明"long i = 555L;    
    }
}上面这些就是变量

有局部变量、实例变量、类变量

局部变量

public class helloworld {
    public static void main(String[] args) {
        int money = 10_0000_0000;//新特性,在数字中加下划线不会被输出。
        String name = "王小明"//局部变量被定义之后必须赋予初始值才能用。
        long i = 555L;
    }
    public void add(){
        System.out.println(i);这个i就是上面那个方法中的局部变量,出了上面那个区域就不能用了。
    }
}

局部变量只能在一个方法中调用

类变量

这是一个从属于类的变量,在一个类的下面可以随意调用(跨方法)。
定义时在数据类型前加static

实例变量

是属于一个类对象的的变量
一个对象的实例变量,可以不被赋值,如若此做,就会被赋予一个初始值,大多为0,0.0,null,false此类。

public class helloworld {
    static int b = 2;
    int age = 1;

    public static void main(String[] args) {
        helloworld X = new helloworld();创建一个实例对象
        System.out.println(X.age);输出1,要用实例变量就得创建一个实例对象
        System.out.println(helloworld.b); 输出2 类变量可以直接用
    } 
}

常量

final+数据类型+变量名=数值
这是一个不允许被改变结果的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值