Java从入门到入坟(一) —— 标识符、数据类型、转换及内存溢出

Java基础语法

标识符

1、所有标识符都以字母(A—Z或a—z)、美元符号($)、下划线(_)开始

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

3、大小写敏感

数据类型

强类型语言:变量使用严格符合规定,所有变量先定义后使用

Java数据类型分为:

数据类型

public class Demo02 {
    public static void main(String[] args) {
        //八大基本数据类型

        //整数
        int num1 = 1000;
        byte num2 = 20;
        short num3 = 30;
        long num4 = 30L;//Long类型要在数字后面加L

        //小数:浮点数
        float num5 = 50.1F;
        double num6 = 3.123;

        //字符
        char name = 'a';
        String namea = "sa";

        //布尔值:是非
        boolean flag = true;
        boolean flag2 = false;
    }
}

数据类型拓展

public class Demo03 {
    public static void main(String[] args) {
        //整数拓展  二进制0b 十进制 八进制0 十六进制0x
        int i = 10;
        int i2 = 010;//八进制0
        int i3 = 0x10;//十六进制 0-9 A~F
        System.out.println(i);
        System.out.println(i2);
        System.out.println(i3);
        System.out.println("==========================");

        //=============================================================
        //浮点数拓展(float double)     银行业务怎么表示 钱
        //用BigDecimal   数学工具类
        //=============================================================

        float f = 0.1f;
        double d = 1.0/10;
        System.out.println(f==d); //false

        System.out.println("===========================");

        float d1 = 233434343434f;
        float d2 = d1+1;
        System.out.println(d2==d1);//true
        //原因:float  有限 离散 舍入误差 大约 接近但不等于
        //最好完全使用浮点数进行比较!!!

        //=============================================================
        //字符拓展
        //=============================================================
        char c1 ='a';
        char c2 = '中';
        System.out.println(c1);
        System.out.println((int)c1);//强制转换
        System.out.println(c2);
        System.out.println((int)c2);//强制转换
        //所有的字符本质还是数字
        //编码 Unicode 表:97=a 65=A 2字节 0-65536 Excel 2 16=65536
        //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);//false

        String sc = "hello";
        String sd = "hello";
        System.out.println(sc==sd);//true
        //对象 从内存分析

        //布尔值拓展
        boolean flag = true;
        if (flag = true){}
        if (flag){}
        //Less is more 代码精简易读
    }
}

类型转换

由于Java是强类型语言所以进行有些运算时,要用到类型转换

由低到高

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

运算中,不同类型数据先转化为同一类型,在进行运算

强制转换 (类型)变量名 高-->低

自动转换 低—>高

public class Demo5 {
    public static void main(String[] args) {
        int i = 128;
        byte b = (byte)i;//内存溢出
        System.out.println(i);//128
        System.out.println(b);//-128

        /*注意点:
        1.不能对布尔值进行转换
        2.不能把对象类型转换为不相干的类型
        3.高到低时,强制转换会出现内存溢出或精度问题
         */

        System.out.println("===========================");
        System.out.println((int)23.7);//23
        System.out.println((int)-45.12f);//-45
    }
}

内存溢出

public class Deom06 {
    public static void main(String[] args) {
        //操作比较大的时候,注意溢出
        //JDK7新特性,数字之间可以用下划线分割
        int money = 10_0000_0000;
        int years = 20;

        int total = money*years;//-1474836480,计算的时候溢出了
        //System.out.println(total);
        long total2 = money*years;//默认是int,转换之前已经存在问题了
        //正确操作:
        long total3 = money*((long)years);//20000000000
        System.out.println(total3);

    }
}
posted @ 2021-06-28 18:28  我是一只丘  阅读(63)  评论(0编辑  收藏  举报