1.Java基础

1.注释

单行注释 // 多行注释 /*回车 文档注释(注解)。/**回车


2.标识符

(1)Java所有组成部分都需要名字,类名,变量名以及方法名都称为标识符

(2)且标识符只能以字母、$或者_ 开始首字母之后可以任意

(3)标识符大小写是敏感的

代码演示:

public class Demo01 {
    public static void main(String[] args){
        System.out.println("Hello World !");
        //变量名属于标识符,标识符只能以 字母、_ 和$ 开头。首字母之后可以任意
        //标识符:类名,变量名以及方法名都称为标识符 (标识符大小写是敏感的)
        String _dd = "d";
        String $dd = "d";
        String Dd = "d";
        String 王者荣耀 = "d";//变量名也可以是中文(但一般不建议用中文命名)
        //String class = "";  报错  变量名不能是class
    }
}


3.Java的数据类型

  • 八大基本数据类型:

    整型int byte short long 浮点型 float double 布尔型boolean 字符型char

  • 引用类型 :

    类 接口 数组 如String

代码演示

public class Demo02 {
    public static void main(String[] args) {
        String a = "hello";           //字符串类型
        int number = 10;
        System.out.println(a);
        System.out.println(number);
        //八大基本数据类型
        //整数类型
        int num1 = 10;          //int hex = 0x2F01A; //十六进制
        byte num2 = 127;
        short num3 = 32767;
        long num4 = 999999999L;  //long类型要在数字后面+L  区分它是long 类型。
        //此处用大写L 是为了便于区分 因为用小写l 和 1 很容易混淆,所以一般用大写L。

        //浮点类型
        float num5 = 50.1F;  //加区分它是float类型
        float num51 = 93.1f;
        double num6 = 501.25666666666666666666666666666666666666666666666666;//double aa = 6e02; //科学计数法

        //字符类型
        char num7 = '篇';  //不能写两个字  char只能是单个字符     char num8 = 'A';
            //字符串, 注意********* String不是关键字,是一个类
            //String name = "打赏";
        //布尔类型
        boolean num8 = true;
        boolean num9 = false;
    }
}
public class Demo03 {
    public static void main(String[] args) {
        //整数拓展  进制问题  十进制   二进制0b开头  八进制0开头  十六进制0x开头
        int i1 =10;//十进制10
        int i2 =0b10;//二进制的10
        int i3 = 010;//八进制的10
        int i4 = 0x10;//十六进制的10    // 0~9   A~F

        System.out.println("输出的都是十进制");
        System.out.println(i1);
        System.out.println(i2);
        System.out.println(i3);
        System.out.println(i4);

        //浮点数拓展     银行业务怎么表示?钱
        //BigDecimal  数学工具类 来比较
        //float 有限 离散 舍入误差  大约  接近但不等于
        //double
        //最好完全避免用浮点数比较
        float f = 0.1f;
        double d = 1.0 / 10;
        System.out.println(f);
        System.out.println(d);
        System.out.println(f == d);    //false
        float d1 = 2123123132132f;
        float d2 = d1 + 1;
        System.out.println(d1 == d2);  //居然是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  0-65536    表:97 = a 65 = A

        char c3 = '\u0061';     //Unicode 编码
        System.out.println(c3);     //a

        //转义字符
        // \t   \n   ...
        System.out.println("------------------转义字符---------------------");
        System.out.println("Hello World !");
        System.out.println("Hello\tWorld!");
        System.out.print("Hello\nWorld!");
        System.out.println("HelloWorld!" + "\n");
        System.out.println("\n");
        System.out.println("Hello World!");
        System.out.println("\\n");


        String sa = new String("hello world");
        String sb = new String("hello world");
        System.out.println("//////////////////////////////////////");
        System.out.println(sa == sb);

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

        //布尔值拓展
        boolean flag = false;
        if (flag == true) {}  //等价于 if (flag){}

    }
}

4.字节

一字节等于8位

1 Byte = 8 bit


5.类型转换

不同类型转换为同一类型 然后进行运算。

低------->高 **byte short char int long float double ** (小数优先级高于整数)

  • 高到低 强制转换 (类型)变量名
  • 低到高 自动转换 什么也不用写

数据类型转换注意点

/*注意点
* 1.不能对布尔值进行转换
* 2.不能把对象类型转换为不相干的类型。
* 3.高容量转低容量  强制转换     反之则自动转换。
* 4.转换时,可能存在内存溢出 或  精度问题。
* */
public class Demo03 {
    public static void main(String[] args){
        System.out.println("Hello World !");        
		System.out.println("--------字符---------------");
        char c1 = 'a';
        char c2 = '只';
        System.out.println(c1);//a
        System.out.println(c2);//中
        int a = c1;
        System.out.println(a);//char 转int自动转
        System.out.println((int) c1);
        int a1 = c2;
        System.out.println(a1);
        System.out.println((int) c2);//输出数字Unicode编码
		//所有的字符本质还是数字
    }
}
public class Demo4 {
    public static void main(String[] args) {
        int i = 128;
        byte b = (byte)i;  //强制转换
        System.out.println(i);
        System.out.println(b);   //内存溢出      因为Byte 字节范围 -128~127

        int i1 = 128;
        double b1 = i1;             //低到高  自动转换
        System.out.println(b1);
    }
}
public class Demo04 {
    public static void main(String[] args) {
        int i = 128;
        byte b = (byte)i;  //强制转换
        System.out.println(i);
        System.out.println(b);   //内存溢出      因为Byte 字节范围 -128~127

        int i1 = 128;
        double b1 = i1;             //低到高  自动转换
        System.out.println(b1);

        /*注意点
        * 1.不能对布尔值进行转换
        * 2.不能把对象类型转换为不相干的类型。
        * 3.高容量转低容量  强制转换     反之则自动转换。
        * 4.转换时,可能存在内存溢出 或  精度问题。
        * */

        System.out.println("----------丢失精度-----------");
        System.out.println(23.7);
        System.out.println((int) 23.7);      //double转int
        System.out.println((int) -45.89f);   //float 转int

        char c = 'a';//
        System.out.println(c);
        System.out.println((int) c);
        int d = c + 1;
        System.out.println(d);
        System.out.println((char) d);

        char c3 = '\u0061';
        System.out.println(c3);
    }
}

类型转换常见的问题

溢出问题

public class Demo05 {

    public static void main(String[] args){
        //操作数比较大时,注意溢出问题
        //JDK7新特性,数字之间可以用下划线分割
        int money = 10_0000_0000;//下划线并不会被输出
        System.out.println(money);
        int years = 20;
        int total = money * years;
        System.out.println(total); //输出负数原因:计算的时候溢出。
        long total2 = money * years;
        System.out.println(total2);//输出负数且不正确原因:1. long = int* int 先进行int*int计算溢出已经出错,才进行自动转换为long,
        /*
         * 分析:此处long total2 = (long)money * years;
         * money * years是int 转long 本应该自动转(long total2 = money * years;)
         * 但是 由于money * years数值大于int最大值,已经溢出了。所以应该转为long类型 之后相乘(long)money * years;
         * */
        long total3 = money * ((long) years); //int*long 先自动转成long   输出正确。
        System.out.println(total3);
    }
}
posted @ 2022-03-17 19:22  intelliyu  阅读(23)  评论(0编辑  收藏  举报