Java的数据类型与转换问题

标识符和关键字

java所有的组成部分都需要名字。类名,变量名一级方法名都被称为标识符。

  • 所有的标识符都应该以字母(A——Z或者a——z),美元符($),下划线(_)开始

  • 首字符之后可以是(A——Z或者a——z),美元符($),下划线(_)或数字的任何字符组合

  • 不能使用关键字作为变量名或方法名

  • 标识符是大小写敏感

  • 合法标识符举例:age,$salary,_value

  • 非法表示符举例:123abc,-salary,#abc

public static void main(String[] agrs){
    String 王者荣耀 = "最强王者"
    System.out.println(王者荣耀);
}
  • 可以使用中文命名,但是一般不建议这样去使用,很不建议使用拼音,很low~~

关键字

java关键字是电脑语言里事先定义的,有特别意义的标识符,有时又叫保留字,还有特别意义的变量。Java的关键字对Java的编译器有特殊意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能做用变量名,方法名,类名包名和参数。Java的关键字是对Java编译器有特殊含义的字符串,事变后一起和程序员的一个约定,程序换利用关键字来告诉编译器起声明变量类型,类,方法特性等信息。

常用的关键字

abstractassertbooleanbreakbyte
casecatchcharclassconst
continuedefaultdodoubleelse
enumextendsfinalfinallyfloat
forgotoifimplementsimport
instanceofintinterfacelongnative
newpackageprivateprotectedpublic
returmstrictfpshortstaticsuper
switchsynchronizedthisthrowthrows
transienttryvoidvolatilewhile

数据类型

  • 强数据类型

    • 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用

优点:安全性高

缺点:速度慢

  • 弱数据类型

  • Java的数据类型分为两大类

    • 基本类型(primitive type)

    • 引用类型(reference type)

八大基本类型

public class Demo01 {
​
    public static void main(String[] args) {
        //  八大基本类型
        
        //整数
        int num1 = 10;      //最常用
        byte num2 = 20;
        short num3 = 30;
        long num4 = 30L;    //Long类型要在数字后面加L
        
        //小数:浮点数
        float num5 = 50.1F;     //float类型要在数字后面价格F
        double num6 = 3.141592653589793238462643;
        
        //字符类型
        char name = 'A';
        
        //字符串,String不是关键字,String是类
        String nameA = "中国";
​
        
        //布尔值
        boolean flag = true;
        //boolean flag = false;
    }
​
}

扩展数据类型

package demo;
​
public class Demo02 {
​
    public static void main(String[] args) {
        // 整数拓展:        进制      二进制0b   十进制     八进制0        十六进制0x
        int i = 10;
        int i2 = 010;       //八进制0
        int i3 = 0x10;      //十六进制0x        0~9   A~F   16
        System.out.println(i);
        System.out.println(i2);     //8
        System.out.println(i3);     //16
        System.out.println("=====================================");
        
        //=============================================
        //浮点数拓展:银行业务怎么表示?钱
        //BigDecimal        数学工具类
        //=============================================
        //float     有限  离散  舍入误差        大约  接近但是不等于
        //doube
        
        //最好完全使用浮点数经行比较
        //最好完全使用浮点数经行比较
        //最好完全使用浮点数经行比较
        
        float f = 0.1f;     //0.1
        double d = 1.0/10;      //0.1
        System.out.println(f == d);     //false
        System.out.println(f);
        System.out.println(d);
        
        System.out.println("================================");
        float d1 = 232323223f;
        float d2 = d1 + 1;
        System.out.println(d1 == d2);
        
        //=============================================
        //字符拓展
        //=============================================
        System.out.println("================================");
        char c1 = 'a';
        char c2 = '中';
        
        System.out.println(c1);
        System.out.println((int)c1);    //      强制转换
        System.out.println(c2);
        System.out.println((int)c2);    //      强制转换
        
        //所有字符的本质还是数字
        //编码        Unicode     2字节         65536个字符            Excel早期只有2的十六次方的表格,2的16次方就是65536
        //Uncode可以处理各种语言的文字,Uncode是使用表格思想表示用数字对应字符:如97 = a,65 = A
        //格式:U0000      UFFFF
        
        char c3 = '\u0061';
        System.out.println(c3);     //a
        
        //转义字符
        //      \t      制表符
        //      \n      换行
        //......
        
        System.out.println("================================");
        String sa = new String("hello");
        String sb = new String("hello");
        System.out.println(sa == sb);
        String sc = "hello";
        String sd = "hello";
        System.out.println(sc == sd);
        //对象        从内存分析
        
        //布尔值扩展
        boolean flag = true;
        if(flag) {}     //新手
        if(flag == true) {}     //老手
        //Less is more      代码需要精简易读
        
    }
​
}
​

类型转换

由于java是强类型语言,所以要警醒有些运算的时候,需要用到类型转换。

byte,short,char, > int > long > float > double

低---------------------------------------------------------->高

小数的优先级最高

运算中,不同类型的数据先转化为同一类型,然后再进行运算。

强制转换

数据占用内存的大小,从高(占用内存)到低(占用内存)需要强制转换

package demo;
​
public class Demo03 {
​
    public static void main(String[] args) {
        int i = 128;
        byte b = (byte)i;       //强制转换
        
        //强制转换:     (类型)变量名
        
        System.out.println(i);
        System.out.println(b);      //-128, 内存溢出
        //要避免内存溢出
        
        
​
    }
​
}

自动转换

数据占用内存的大小,从低(占用内存)到高(占用内存)会自动转换

package demo;
​
public class Demo03 {
​
    public static void main(String[] args) {
​
        //自动转换:     从低到高
        int a = 123;
        double c = a;
        System.out.println(a);  //123
        System.out.println(c);  //123.0
        
        char d = 'a';
        int e = d+1;        //自动转换
        System.out.println(e);      //98
        System.out.println((char)e);    //b
        //字符可以转换为数字,数字可以转换为字符
​
    }
​
}
​

注意点:

  1. 不能对布尔值进行转换

  2. 不能把对象类型转换为不相干的类型

  3. 把高容量转换到低容量的时候,强制转换

  4. 转换的时候可能存在内存溢出,或者精度问题!

溢出问题

package demo;
​
public class Demo04 {
​
    public static void main(String[] args) {
        //操作比较大的数的时候,注意溢出问题
        //JDK7的新特性,数字之间可以用下划线分割
        int money = 10_0000_0000;
        int years = 20;
        int total = money*years;
        System.out.println(money);  //1000000000
        System.out.println(total);      //内存溢出
        
        long total2 = money*years;      //数据转换
        System.out.println(total2);     //内存溢出,原意是默认是int,再转换之前就出现了问题
        
        long total3 = money*((long)years);      //先把一个数转换为long类型
        System.out.println(total3); //内存没溢出,属于正常
​
    }
​
}

狂神说java

P22到P25

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值