03.java基础语法

基础语法

  • 注释

​ 1.单行注释://+注释内容

​ 2.多行注释:/* 注释内容*/

​ 3.文档注释:/** 注释 */

  • 标识符

    • 关键字(java的所有组成部分都需要名字。类名、变量名以及方法名都被称为标识符)

在这里插入图片描述

  • 所有的标识符都应以字母,美元符($)、或者下划线开始(__)

  • 首字符之后可以是字母,美元符,下划线或数字的任意字符组合。

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

  • 标识符是大小写敏感的。

  • 可以使用中文命名,但一般不建议这样使用

  • 数据类型

    • 强类型语言

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

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

      • 基本类型
      • 引用类型

    img

    byte是JAVA中最小的数据类型,它在内存中占(1个字节)8位(8个bit),取值范围从-128到127
    赋值:byte I = 127
    short 短整型
    short类型在内存中占2个字节,取值范围从 -32768到32767
    赋值:short i = 32767;

    char 字符型
    char类型在内存中占2个字节。表示一个字符,也可以使用ASCII码范围内的值来给char型的变量赋值。由于字符在内存中的取值不存在负数范围,所有取值范围从 0 到 65535
    赋值:char i = ‘a’; 或者 char i = 97;

    int 整型
    int型在内存中占4个字节。取值范围从 -2147483648 到 2147483647
    赋值:int i = 10;
    float 单精度浮点型
    float型在内存中占4个字节。取值范围从 -3.4E38 到 3.4E38
    赋值:float i = 1.0F;
    long 长整型
    long型在内存中占8个字节。取值范围从 -9223372036854775808 到 9223372036854775807

    赋值:long i = 123L;

    double 双精度浮点型
    double 型在内存中占8个字节。取值范围从 -1.7E308 到 1.7E308

    赋值:double i = 213.31232;

    boolean 布尔型 只占1位
    boolean类型只有两个值:true和false。


  • 什么是字节?

    • 位(bit):是计算及内部数据存储的最小单位,11001100是一个八位二进制数。

    • 字节(byte):是计算机中数据处理的基本单位,习惯上用大写字母B表示,1B(byte,字节)=8bit(位)

    • 字符:是计算机中使用的字母,数字,字和符号

      1KB=1024B

      1M=1024KB

      1G=1024M

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RF6Kc2hY-1626159102088)(C:\Users\LXK\AppData\Roaming\Typora\typora-user-images\image-20210712133036605.png)]

  • 最好避免浮点数比较(会产生误差)

  • 所有的字符本质上还是数字

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h2zSM70t-1626159102095)(C:\Users\LXK\AppData\Roaming\Typora\typora-user-images\image-20210712173407707.png)]

  • 类型转换

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xjQVTSDs-1626159102101)(C:\Users\LXK\AppData\Roaming\Typora\typora-user-images\image-20210712174503774.png)]

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

    • public class test1 {
          public static void main(String[] args) {
              int a = 128;
              //强制转换  格式:(类型)变量名   条件 :由高到低
              byte b = (byte)a;//内存溢出
              //自动转换  条件 :低到高
              double c = a;
              System.out.println(a);
              System.out.println(b);
              System.out.println(c);
          }
      }
      
    • 注意点:

    • 不能对布尔值进行转换

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

    • 再把高容量转到低容量的时候,强制转换

    • 转换的时候可能存在内存溢出,或者精度问题!(浮点型到整型)

    • 操作比较大的数时,注意溢出问题

      public class test2 {
          public static void main(String[] args) {
              int money = 1000000000;
              int years = 20;
              int total1 = money*years;//溢出
              long total2 = money*years;//默认是int,转换前已经出现问题
              long total3 = money*((long)years);//先把一个数转换成long类型
              System.out.println(total2);
              System.out.println(total1);
              System.out.println(total3);
          }
      }
      
      

    变量

    • java是一种强类型语言,每个变量都必须声明其类型

    • java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。

    • 注意

      • 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
      • 变量必须是合法的标识符
      • 变量声明是一条完整的语句,因此每个声明都必须以分号结束
    • public class test3 {
          public static void main(String[] args) {
              //int a,b,c;程序可读性
              //int a=1,b=2,c=3;不建议这样写。
              String name = "lxk";
              char c = 'a';
              double pi = 3.14;
          }
      }
      
    • 变量作用域

      • 类变量

      • 实例变量

      • 局部变量

      • public class Test4 {
            //实例变量
            boolean lxk;
            int age;
            String name;
            //类变量  static
            static  double salary = 2500;
            //main方法
            public static void main(String[] args) {
                //局部变量;必须声明和初始化值
                int i = 10;
                System.out.println(i);
                //变量类型 变量名字 = new test4()
                Test4 test4 = new Test4();
                System.out.println(test4.age);
                System.out.println(test4.name);
                System.out.println(test4.lxk);
                //类变量 static
                System.out.println(salary);
            }
            /*
            * 实例变量:从属对象;如果不进行初始化,这个类型的默认值为:0,0.0
            * 布尔值:默认是false
            * 除了基本类型,其余默认值都是null
            * */
            //其他方法
            public void add(){
        
            }
        }
        
  • 变量的命名规范

    • 所有的变量、方法、类名:见名知意

    • 类成员变量:首字母小写和驼峰原则(除了第一个单词外,后面的单词首字母大写):monthSalary

    • 局部变量:首字母小写和驼峰原则

    • 常量:大写字母和下划线:MAX_VALUE

    • 类名:首字母大写和驼峰原则:Man,GoodMan

    • 方法名:首字母小写和驼峰原则:run(),runRun()

  • 常量

    • 常量(constant):初始化(initialize)后不能再改变值!不会变动的值

    • 所谓常量可以理解为特殊的变量,它的值被设定后,在程序运行过程中不允许在改变。

    • final 常量名 = 值;
      final double PI = 3.14;
      
    • 常量名一般用大写字符。

    • public class Test5 {
          //final为修饰符,不存在先后顺序
          final static double PI = 3.14;
          public static void main(String[] args) {
              System.out.println(PI);
          }
      }
      
  • 运算符

    • java语言支持如下运算符:

      • 算术运算符:+,-,*,/,%(求余),++,–
      • 赋值运算符=
      • 关系运算符:>,<,>=,<=,==,!=,instanceof
      • 逻辑运算符:&&(与),||(或),!(非)
      • 位运算符:&,|,^,~,>>,<<,>>>(了解)
      • 条件运算符?,:
      • 扩展赋值运算符:+=,-=,*=,/=
    • package java_base_operator;
      
      public class Test1 {
          public static void main(String[] args) {
              //  二元运算符
              //  快捷键Ctrl+D:复制当前行到下一行
              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(c%b);//取余
              System.out.println((double)a/b);
              System.out.println("================");
      
              long e = 123123123123123L;
              int f = 123;
              short g = 10;
              byte h = 8;
      /*因为低级向高级不需要强制转换,而高级到低级则相反,所以结果类型为最高级别类型*/
              System.out.println(e+f+g+h);//结果为Long类型
              System.out.println(f+g+h);//结果为int 类型
              System.out.println(g+h);//结果为 int类型
              System.out.println("============");
      
              int j = 10;
              int k = 20;
              //关系运算符,返回结果为布尔值:true/false
              System.out.println(j>k);//输出false
              System.out.println(j<k);//输出true
              System.out.println(j==k);//输出false
              System.out.println(j!=k);//输出true
      
      
          }
      }
      
      • 自增和自减

        • package java_base_operator;
          
          public class Test2 {
              public static void main(String[] args) {
                  // ++(自增),--(自减),一元运算符
                  int a = 3;
                  int b = a++; // 执行完这段代码后,先给b赋值,在自增
                  //a = a + 1;
                  System.out.println(a);
                  //a = a + 1
                  int c = ++a;// 执行这段代码前,先自增,再给b赋值
                  System.out.println(a);//结果为:5
                  System.out.println(b);//结果为:3
                  System.out.println(c);//结果为:5
                  //拓展:幂运算 2^3 = 2*2*2 = 8  很多运算,我们会使用一些工具类来操作!
                  double pow = Math.pow(2,3);
                  System.out.println(pow);//结果为8.0
              }
          } 
          
  • 逻辑运算符

    • package java_base_operator;
      // 逻 辑 运 算 符
      public class Text3 {
          public static void main(String[] args) {
              boolean a = true;
              boolean b = false;
              /* a&&b :逻辑与运算,当两个变量都为真时结果才为true
              * a||b :逻辑或运算,当两个变量有一个为真时,结果为true
              * !a , !b, 逻辑非运算,取反。
              */
              System.out.println("a&&b:"+(a&&b));// 输出结果为:a&&b:false
              System.out.println("a||b"+(a||b));// 输出结果为:a||b:true
              System.out.println("!(a&&b):"+!(a&&b));// 输出结果为:!(a&&b):true
      
              // 短 路 运 算
              int c = 4;
              int d = 5;
              int e = 6;
              /* 在进行&&(与)运算时,当前一部分为假时,直接跳出此语句,后一部分不在执行 */
              System.out.println((c>d)&&(c++>d));//输出结果为false
              System.out.println((d<e)&&(d++==e));//输出结果为false
              System.out.println(c);// 数结果为 4
              System.out.println(d);// 输出结果为 6
          }
      }
      
  • 位运算符

    • package java_base_operator;
      // 位 运 算  (效率高(二进制层面))
      public class Test4 {
          public static void main(String[] args) {
              /*
              A = 0011 1100
              B = 0000 1101
      ------------------------------------------
              A&B = 0000 1100  (与)
              A|B = 0011 1101  (或)
              A^B = 0011 0001  (异或)
              ~A = 1100 0011  (非)
              ~B = 1111 0010  (非)
      
              eg: 2*8 = 16    2*2*2*2
              << (左移)  *2
              >> (右移)  /2
              分析:
                  对于二进制:
                      0000 0000    0
                      0000 0001    1
                      0000 0010    2
                      ...
                      0000 0100    4
                      ...
                      0000 1000    8
                      ...
                      0001 0000    16
               */
              System.out.println(3<<2); // 结果为(3*2*2)= 12
              System.out.println(2<<3); // 结果为(2*2*2*2)= 16
              System.out.println(16>>3); // 结果为 (16/2/2/2)= 2
          }
      }
      
      
  • 条件运算符

    • 拓展赋值运算符

      • package java_base_operator;
        
        public class Test5 {
            public static void main(String[] args) {
                int a = 10;
                int b = 20;
                a+=b;  // a = a + b
                System.out.println(a);//输出结果为30
                a-=b;  // a = a - b
                System.out.println(a); //输出结果为10
        
                /*
                字符串连接符  +
                如果字符串出现在前面,则后面的自动拼接(默认为字符串拼接)
                相反如果字符串在后面,则进行运算
                 */
                System.out.println(""+a+b); //输出结果为1020
                System.out.println(a+b+""); // 输出结果为30
            }
        }
        
        
    • 三元运算符

      • package java_base_operator;
        //  三 元 运 算 符
        public class Test6 {
            public static void main(String[] args) {
                /* X ? Y : Z
                如果x==true,则结果为y,否则结果为z
                 */
                int score = 50;
                String type = score <60 ? "不及格" : "及格";
                System.out.println(type);
            }
        }
        
    • 运算符优先级

[点此查询]: http://c.biancheng.net/view/794.html ““运算符优先级””

package java_base_operator;
  //  三 元 运 算 符
  public class Test6 {
      public static void main(String[] args) {
          /* X ? Y : Z
          如果x==true,则结果为y,否则结果为z
           */
          int score = 50;
          String type = score <60 ? "不及格" : "及格";
          System.out.println(type);
      }
  }
  ```
posted @ 2022-07-17 19:08  小白到大牛  阅读(107)  评论(0)    收藏  举报