Java基本语法笔记2021/9/14

本文详细介绍了Java编程语言中的八大基本数据类型,包括整型、浮点型、字符型和布尔型,以及它们的取值范围和存储大小。此外,还讨论了常量的使用以及运算符的规则,如类型转换、自增自减、逻辑运算和位运算。同时,通过示例展示了变量的声明和使用,包括类变量和实例变量的区别。
摘要由CSDN通过智能技术生成
  • Java八大基本数据类型
  • 常量
  • 运算符
public class Hello {
    public static void main(String[] args) {
        //输出一个hello world
        System.out.println("Hello, World!");
        Hello h = new Hello();
        //h.dataType();  //八大基本数据类型
        //h.variable();  //常量
        h.operator();  //运算符
    }

    //==============八大基本数据类型=====================
    public void dataType() {
        //整数
        int num1 = 10;  //占4个字节,范围-2147483648~2147483647   32位
        byte num2 = 20; //占1个字节,范围-128~127
        short num3 = 30; //占2个字节,范围-32768~32767
        long num4 = 30L; //占8个字节,范围  64位

        //小数:浮点数
        float num5 = 10.1f; //占4个字节
        double num6 = 10.2; //占8个字节

        //字符
        char name = '哈'; //占2个字节
        String name1 = "哈哈哈";
        //字符串,String不是关键字,是类

        //布尔值:是非
        boolean flag = true; //占一位,1字节 = 8位
        //boolean flag = false;

        //引用数据类型:类,接口,数组

        //整数扩展:(进制)二进制0b 八进制0 十六进制0x
        int i = 10;
        int i1 = 010;   //八进制0
        int i2 = 0x10;  //十六进制0x  0~9 A~F 16
        System.out.println(i);    //10
        System.out.println(i1);   //8
        System.out.println(i2);   //16
        //==================================
        //浮点数扩展
        //==================================
        //float  有限  离散  舍入误差  大约  接近但不等于
        //double
        //最好完全避免使用浮点数进行比较!!
        //最好完全避免使用浮点数进行比较!!
        float f = 0.1f;
        double d = 1.0 / 10;
        System.out.println(f == d);//false

        float d1 = 23121212f;
        double d2 = d1 + 1;
        System.out.println(d1 == d2);//true

        //==================================
        //浮点数扩展
        //==================================
        char c1 = 'a';
        char c2 = '中';
        System.out.println(c1);        //a
        System.out.println((int) c1);  //97
        System.out.println(c2);        //中
        System.out.println((int) c2);  //20013
        //所有的字符本质还是数字
        //编码 Unicode表:(97=a  65=A)2字节 0~65536

        // U0000 ~UFFFF
        char c3 = '\u0061';
        char c4 = '\u0055';
        System.out.println(c3); //a
        System.out.println(c4); //U
        //转义字符:\t,\n

        //类型转换
        //低→高  byte,short,char → int → long → float → double
        //强制类型转换   高 → 低
        //自动类型转换   低 → 高
        int x = 128;
        byte b = (byte) x;
        double y = x;          //低 → 高不用强制转换
        System.out.println(x); //128
        System.out.println(b); //-128   内存溢出
        System.out.println(y); //128.0
        /*
        注意点:
        1. 不能对布尔值进行转换
        2. 不能把对象类型转换成不相干的类型
        3. 在把高容量转换到低容量的时候,强制转换
        4. 转换的时候可能存在内存溢出,或者精度问题
         */
        System.out.println((int) 23.7);   //23
        System.out.println((int) -45.89f);//-45

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

        //操作比较大的时候注意溢出问题
        int money = 10_0000_0000; //数字之间可以用下划线分割
        int years = 20;
        int total = money * years;
        System.out.println(total);  //-1474836480   溢出
        long total2 = money * years;
        System.out.println(total2);  //默认是int,转换之前已经出现问题   -1474836480   溢出
        long total3 = money * (long) years;
        System.out.println(total3);  //20000000000
    }

    //===================常量=====================
    public void variable() {
        final double PI = 3.14;
        System.out.println(PI);
    }

    //===================运算符=====================
    public void operator() {
        //复制当前行到下一行 ctrl+alt+down
        //复制当前行到上一行 ctrl+alt+up
        //删除当前行  ctrl+d
        long a = 1515161616546L;
        int b = 128;
        short f = 12;
        byte d = 8;
        double e = 25;
        char c = 'a';
        // 含有高容量数据类型参与运算的结果的数据类型为高容量数据类型; 低于int的其他数据类型参与运算的结果类型都为int
        System.out.println(getType(a + b + c + d + e));  //class java.lang.Double
        System.out.println(getType(a + b + c + d));      //class java.lang.Long
        System.out.println(getType(b + c + d));          //class java.lang.Integer
        System.out.println(getType(c + d));              //class java.lang.Integer
        System.out.println(b + c);                          //128 + 97 = 225
        System.out.println(getType(b + c));              //class java.lang.Integer
        System.out.println(c + f);                          //12 + 97 = 109
        System.out.println(getType(c + f));              //class java.lang.Integer

        //++ --自增 自减
        int x = 3;
        int y = x++;  //x先自增,再赋值给y
        System.out.println(x);  //4
        int z = ++x;  //x先赋值给z,再自增
        System.out.println(y);  //3
        System.out.println(z);  //5

        //幂运算
        double pow = Math.pow(3, 2);
        System.out.println(pow); //9.0

        //逻辑运算符: 与(and)  或(or)  非(取反)
        boolean p = true;
        boolean q = false;
        System.out.println("p&&q:" + (p && q));       //false
        // 短路:先判断q为false, 就不判断P了
        System.out.println("p&&q:" + (q && p));       //false
        System.out.println("p||q:" + (p || q));       //true
        System.out.println("!(p&&q):" + (!(p && q))); //true

        //短路实验
        int w = 5;
        boolean u = (w < 4) && (w++ > 1);
        System.out.println(u);  //false
        System.out.println(w);  //5  没有进行自增

        //位运算:&, |, ^(异或),  ~, >>, <<, >>>
        /*
        A =    0011 1100
        B =    0000 1101
        ------------------------------
        A&B=   0000 1100
        A|B=   0011 1101
        A^B=   0011 0001
        ~B=    1111 0010

        2*8 = 16  2*2*2*2=16
        效率极高!!!
        << 左移  相当于*2
        >> 右移  相当于/2
        0000 0000   0
        0000 0001   1
        0000 0010   2
        0000 0100   4
        0000 1000   8
        0001 0000   16
         */
        System.out.println(2 << 3);  //16  相当于2*2*2*2

        //字符串连接符  + , String
        int m = 10;
        int n = 20;
        System.out.println("" + m + n);  //1020  ""在前,则将m和n先转成String,再与“”进行连接
        System.out.println(m + n + "");  //30    ""在后,则m+n依旧进行运算后,再与“”进行连接
        //三元运算符
        int score = 80;
        String type = score < 60 ? "不及格" : "及格";
        System.out.println(type);   //及格

    }

    //获取变量的数据类型
    private static String getType(Object a) {
        return a.getClass().toString();
    }
}
  • 变量
//==================变量==================
public class Variable {

    //类变量  static
    static double salary=2500;
    //实例变量:从属于对象;如果不自行初始化,这个类型的默认值 0  0.0
    //布尔值:默认是false
    //除了基本类型,其余的默认值都是null
    String name;
    int age;

    public static void main(String[] args){
        //局部变量:必须声明和初始化值
        int i =10;
        System.out.println(i);

        //使用实例变量时
        Variable vab =new Variable();
        System.out.println(vab.name); //null
        System.out.println(vab.age);  //0
        //类变量可直接使用
        System.out.println(salary);   //2500.0
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值