Java基础语法

一、注释、标识符和关键字

1. 注释

(1) 单行注释

//

(2) 多行注释

/* */

(3) 文档注释

javaDoc:文档注释

/* * */

2.标识符

​ 类名、变量名、方法名都被称为标识符。

![标识符](D:\homework\MarkDown Learning\标识符.png)

​ Tips:

​ (1) 所有的标识符都应该以字母(包含大小写)、美元符¥、下划线_开始,首字符之后可以是字母、美元符、下划线或数字的任何字符组合。

​ (2) 不能使用关键字作为变量名或者方法名

​ (3) 标识符区分大小写

二、数据类型

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

    1. 基本类型(primitive Type)

      (1) 整数型

      ​ byte 占1个字节,范围:-128~127

      ​ short 占2个字节,范围:-32768~32767

      ​ int 占4个字节,范围:正负21亿

      ​ long 占8个字节,要在数字后边加L\l(尽量写大写的L)

      (2) 浮点型

      ​ float 4个字节,要在数字后边加f

      ​ double 8个字节

      (3) 字符型

      ​ char 2个字节

      ​ 字符串 String不是关键字,是类

      (4) boolean型

      ​ 占19位,其值只有true和false

    2. 引用类型(Reference Type)

​ (1) 类

​ (2) 接口

​ (3) 数组

  • 什么是字节?

    位(bit):是计算机内部数据储存的最小单位

    字节(byte):是计算机中数据处理的基本单位,一般用B表示

    1B = 8 bit

    1bit表示1位

    1Byte表示一个字节

    1024B = 1KB

    1024KB = 1M

    1024M = 1G

    1024G = 1TB

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

  • 拓展

    1. 整数拓展——进制

      二进制0b

      八进制0

      十进制

      十六进制0x 0-9 A-F

    2. 浮点数拓展

      浮点数是有限的、离散的,有舍入误差,接近但不等于

      最好完全避免使用浮点数进行比较

      BigDecimal :数学工具类

    3. 字符拓展

      所有字符本质还是数字

    4. 转义字符

      \t 制表 \n 换行

三、类型转换

  • 由于Java是强类型语言,所以进行有些运算的时候需要进行类型转换。运算中,不同类型的数据先转为同一类型,再进行运算。

  • 由低到高分别为:byte,short,char < int < long < float < double

  • 格式:强制转换:(类型)变量名 高-->低 自动转换: 低-->高

  • Tips:

    • 不能对布尔值进行转换

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

    • 在把高容量转化为低容量时要进行强制转换

    • 转换的时候可能存在内存溢出或精度问题

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

    • JDK7新特性:数字之间可以用下划线分隔,且输出时下划线不会输出。

      public class Demo {
          public static void main(String[] args) {
              int money = 10_0000_0000;
              int years = 20;
              int total = money*years;//-1474836480,计算的时候溢出了
              long total2 = money*years;//默认是int,转换前已经存在问题了
              long total3 = money*((long)years);//先把一个数转化成long
                  
          }
      }
      

四、变量、常量、作用域

1. 变量

  • 变量就是可以变化的量

  • Java是强类型语言,每个变量都必须声明类型

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

    type varName  [=value] [{,varName[=value]}];
    //数据类型 变量名 = 值;可以用逗号来声明多个同类型变量(但不建议这样写)
    
  • Tips:

    • 每个变量都有类型(基本类型或引用类型)
    • 变量名必须是合法标识符
    • 变量声明是一条完整的语句,因此每一个声明都必须以分号结束。
public class Demo {
  public static void main(String[] args) {
      //int a,b,c;
      //最好写成
      int a;
      int b;
      int c;
      
      String name = "Luffy";
      char x = 'X';
  }
}

2. 变量作用域

  • 类变量:加了static的变量,从属于类

  • 实例变量:在方法的外边,类的里面;从属于对象

    ​ 如果不进行初始化,值就会变成这个类型的默认值(0 0.0 布尔值:false 除了基本类型,默认值都是null)

  • 局部变量:是在方法里,且使用前必须声明且初始化值

    public class Variable {
        //类变量
        static int allClick = 0;
        //实例变量
        String str = "hello world";
        
        public void method() {
            //局部变量
            int i = 0;
        }
    }
    
    public class Demo {
        //属性:变量
        
         //类变量:加了static的变量
        static double salary = 2500;
        
        //实例变量:从属于对象
        String name;
        int age;
        
        //main方法
        public static void main(String[] args) {
            //局部变量
            int i = 10;
            System.out.println(i);
            
            //变量类型 变量名字 = new Demo();
            Demo demo = new Demo();
            System.out.println(demo.age);
            System.out.println(demo.name);
            
            //类变量
            System.out.println(salary);
        }
    }
    

3. 常量(Constant)

  • 初始化之后不能再改变值,即常量就是不会变动的值。

  • 常量名一般使用大写字符

    //final 常量名 = 值
    final double PI = 3.14;
    
    //修饰符,不存在先后顺序
    static final double A = 1;
    final static double A = 1;
    

4. 变量的命名规范

(1)类成员变量、局部变量、方法名:首字母小写和驼峰原则(monthSalary)

(2)常量:大写字母和下划线:MAX_VALUE

(3)类名:首字母大写和驼峰原则(GoodWoman

五、运算符

  1. 算术运算符:+、-、*、/、%(取余/模)、++、--
  2. 赋值运算符:=
  3. 关系运算符:>、<、>=、<=、==、!=、instanceof
  4. 逻辑运算符:&& || !
  5. 位运算符:& | ^ ~ >> << >>> (了解即可)
  6. 条件运算符:?:
  7. 扩展赋值运算符: += -= *= /=
//二元运算符
public class Demo {
    public static void main(String[] args) {
        //Ctrl+D:复制当前行到下一行
        int a = 10;
        int b = 20;
        int c = 30;
        int d = 40;
        
        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(a/(double)b);
    }
}
//逻辑运算符
public class Demo {
    public static void main(String[] args) {
        //与and 或or 非
        boolean a = true;
        boolean b = false;
        //逻辑与运算:两个变量都为真,结果才为真
        System.out.println("a && b:" + (a&&b));
        //逻辑或运算:两个变量有一个为真,结果就为真
        System.out.println("a || b:"+(a||b));
        System.out.println("!(a && b):"+!(a&&b));
        //短路运算
        
    }
}
//位运算符
public class Demo {
    public static void main(String[] args) {
        /*
        A = 0011 1100
        B = 0000 1101
        
        A&B 如果相对应位都是1结果则为1,否则为0; 0000 1100
        A|B 如果相对应位都是0结果则为0,否则为1; 0011 1101
        A^B 如果相对应位相同则是0,否则为1;	   0011 0001
        ~B	取反
        */
        
        /*
        效率极高
        <<左移  一位,相当于数字*2 
        >>右移  一位,相当于数字/2
        */
    }
}
//字符串连接符 +
int a = 10;
int b = 20;
//从左到右,有String类型,则再运算+时是String类的拼接
System.out.println(""+a+b); //1020
//从左到右,先进行加法运算然后再进行String类的拼接
System.out.println(a+b+"");//30
//条件运算符(三元运算符)
public class Demo {
    public static void main(String[] args) {
        //x ? y : z
        //如果x为true则结果为y,否则结果为z
    }
}

六、javaDoc生成文档

通过命令行 javadoc 参数 java文件