Back
Featured image of post JavaSE01

JavaSE01

Java基础语法


  1. 注释、标识符、关键字
  2. 数据类型
  3. 类型转换
  4. 变量常量
  5. 运算符
  6. 包机制、JavaDoc

注释、标识符、关键字

1.注释(注释不会被执行)

  • 单行注释:用"//“表示
  • 多行注释:”/* */“表示
  • JavaDoc文档注释:用/** */表示

2.标识符

  • 标识符以字母、美元符($)、下划线(_)开头
  • 首字符之后可以是字母、美元符($)、下划线(_)或数字的任何字符组合
  • 不能使用关键字作为变量名或方法名
  • 标识符是大小写敏感的
  • String不是关键字,是一个类

Java数据类型

  • 整数类型

    • Byte占1个字节范围-128-127
    • short占2个字节范围
    • int占四个字节范围
    • long占8个字节范围(Long类型要在数字后面加个L)
  • 浮点类型

    • float占4个字节范围(float类型要在数字后面加个F)
    • double占8个字节
  • 字符类型:char占2个字节

  • Boolean类型:占一位 其真值只有true和Flase两个

  • 浮点数拓展

            float a1 = 0.1f;//0.1
            double a2 = 1.0/10;//0.1
    
            System.out.println(a1==a2);//此处输出为false
            System.out.println(a1);
            System.out.println(a2);
    
            float a3 = 2121213121212f;
            float a4 = a3+1;
            System.out.println(a3==a4);//此处输出为true
    

    因为float的有限性、离散性、舍入误差,所以以上代码比较结果如下

    image-1-1

  • 避免使用浮点数进行比较

  • 字符拓展

            //字符拓展
            char a1 = 'a';
            char a2 = '中';
    
            System.out.println(a1);
            System.out.println((int)a1);//强制转换
    
            System.out.println(a2);
            System.out.println((int)a2);//强制转换
    
  • 输出结果为

    image-1-2

  • 所有字符的本质都是数字,所有所有字符都有对应的Unicode编码

  • Unicode的编码方式:

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

    image-1-3

类型转换

  • Java是强类型转换语言,所以在进行运算时,需要把不同类型的数据转换成同一类型再进行运算

  • 类型优先级

    image-1-4

        int i = 128;
        double d = i;//自动转换
        byte b = (byte)i;//强制转换,注意数据溢出

        System.out.println(i);
        System.out.println(d);
        System.out.println(b);
        /**
         * 注意点:
         * 不能对布尔型进行转换
         * 不能把对象类型转换为不相干的类型
         * 在把高容量转换成低容量的时候,强制转换
         * 转换的时候可能存在内存1溢出,或者是精度问题*/

输出结果:

!image-1-5

  • 因为Byte类型取值范围为-128-127所以数据溢出了。
  • “强制转换"时需要注意数据溢出; 转换方式: (类型)变量名 优先级高–低时使用
  • 自动转换:优先级低–高时自动使用

数据溢出问题:

        //操作比较大的数据时 注意溢出问题
        //JDK7新特性 数字之间可以用下划线_分割
        int money = 10_0000_0000;//新特性
        int years = 20;
        int total1 = money*years;//-1474836480,计算的时候已经溢出
        System.out.println(money);
        System.out.println(years);
        System.out.println(total1);

        long total2 = money*years;//先计算再赋值,所以数据转换前已经溢出了
        System.out.println(total2);

        long total3 = money*((long)years);//先把一个数转换成long 计算后的结果的类型即为long类型
        System.out.println(total3);

输出结果:

image-1-6

变量、常量、作用域

  1. 类变量

    • 静态代码块(static)

      • 静态代码块只会被执行一次
      • 静态类可以被局部对象调用
      • 静态变量可以被执行多次
      public class demo5 {
          static int i=1;
          static {
              System.out.println("a");
              i++;
          }
          public demo5(){
              System.out.println("b");
              i++;
          }
      	//在此之前i已被调用两次,i的值为2
          public static void main(String[] args) {
              demo5 d1 = new demo5();//i在次被调用,i+1,此时i=3
              System.out.println(d1.i);
      
              demo5 d2 = new demo5();//i在次被调用,i+1,此时i=4
              System.out.println(d2.i);
          }
      }
      
      

      输出结果:

      image-1-7

    • 实例变量:从属于对象,如果不自动化初始化,这个类型的默认值为0/0.0

    • 布尔值:默认是false

    • 除了基本类型,其余的默认值都是null;

  2. 常量

    • 常量定义通过final实现 一般使用大写字母表示
    • 修饰符不存在先后顺序
  3. 变量命名规则

    image-1-8

基本运算符

  • Java语言支持如下运算符

image-1-9

  • 当java进行除法运算时,需要进行类型强转换

    package JavaSEbase;
    
    public class demo6 {
        public static void main(String[] args) {
            int a = 10;
            int b = 20;
            int c = 25;
            int d = 25;
            System.out.println(a+b);
            System.out.println(a-b);
            System.out.println(a*b);
            System.out.println(a/b);//结果为0.5
            System.out.println(a/(double)b);
    
        }
    }
    

    image-1-10

    显然加了强转double的表达式输出了正确的结果

  • 在整数的运算过程中,有long类型则结果为long类型,其余都为int类型

    package JavaSEbase;
    
    public class demo7 {
        public static void main(String[] args) {
            long a = 123132132132132L;
            int b = 123;
            short c = 10;
            byte d =8;
    
            System.out.println(a+b+c+d);//long
            System.out.println(b+c+d);//int
            System.out.println(c+d);//int
    
        }
    }
    

    image-1-11

  • 一元运算符:自增与自减

    package JavaSEbase;
    
    public class demo8 {
        public static void main(String[] args) {
            int a = 3;
            int b = a++;//先把a赋值给b再自增
            //a=a+1
            System.out.println(a);//此时a=4
            //a=a+1
            int c = ++a;//先自增再把a赋值给c
            System.out.println(a);//此时a=5
            System.out.println(b);
            System.out.println(c);
        }
    }
    
    

    image-1-12

  • 逻辑运算符

    • 逻辑与&&:有假就假,全真才真

    • 逻辑或||:有真就真,全假才假

    • 逻辑与的短路运算

      package JavaSEbase;
      
      public class demo9 {
          public static void main(String[] args) {
              //短路运算:即使用逻辑与运算时,假设前面的值为假,则运算符后面的运算不会执行
              int c = 5;
              boolean d = (c<4)&&(c++<4);//因为c<4为假,所以后面c++不会被执行
              System.out.println(d);
              System.out.println(c);
          }
      }
      
      

      image-1-13

  • 位运算:针对二进制数据进行的运算

    • &:同位比较,全1才1,有0则0
    • |:同位比较,全0才0,有1则1
    • ^:同位比较,相同为0,不同位1
    • ~:取反符号。
    package JavaSEbase;
    
    public class demo10 {
        public static void main(String[] args) {
            /*
            * A = 0011 1100
            * B = 0000 1101
            * -----------------------
            * A&B = 0000 1100
            * A|B = 0011 1101
            * A^B = 0011 0001
            * ~B = 1111 0010
            * -----------------------
            * */
        }
    }
    
  • 三元运算符

    package JavaSEbase;
    
    public class demo11 {
        public static void main(String[] args) {
            //x ? y : z
            //如果x为真,则结果为y,否则结果为z
            int score = 50;
            String type = score < 60 ? "不及格":"及格";
        }
    }
    
    

    image-1-14

  • +号运算符的特殊之处(运算符)

    package JavaSEbase;
    
    public class demo10 {
        public static void main(String[] args) {
            int a = 10;
            int b = 20;
    
            a+=b;//相当于a = a+b
            a-=b;//相当于a = a-b
    
            System.out.println(a);
    
            //当+号前面有String 则自动把后面的运算也转换成String、
            System.out.println(""+a+b);
    
            System.out.println(a+b+"");
    
        }
    }
    

    image-1-15

包机制

  • 命名规范

image-1-16

JavaDoc

Licensed under CC BY-NC-SA 4.0
Built with Hugo
Theme Stack designed by Jimmy