Java基础语法

1、注释
  1. 单行注释:注释一行文字;// 注释
//这是单行注释
  1. 多行注释:注释一段文字; /* 注释 */
/*
这是
多行
注释
*/
  1. JavaDoc文档注释:/** 注释 */
/**
*
*
*/
2、关键字

类别

关键字

说明

访问控制

private

私有的

protected

受保护的

public

公共的

default

默认

类、方法和变量修饰符

abstract

声明抽象

class


extends

扩充,继承

final

最终值,不可改变的

implements

实现(接口)

interface

接口

native

本地,原生方法(非 Java 实现)

new

新,创建

static

静态

strictfp

严格,精准

synchronized

线程,同步

transient

短暂

volatile

易失

程序控制语句

break

跳出循环

case

定义一个值以供 switch 选择

continue

继续

default

默认

do

运行

else

否则

for

循环

if

如果

instanceof

实例

return

返回

switch

根据值选择执行

while

循环

错误处理

assert

断言表达式是否为真

catch

捕捉异常

finally

有没有异常都执行

throw

抛出一个异常对象

throws

声明一个异常可能被抛出

try

捕获异常

包相关

import

引入

package


基本类型

boolean

布尔型

byte

字节型

char

字符型

double

双精度浮点

float

单精度浮点

int

整型

long

长整型

short

短整型

变量引用

super

父类,超类

this

本类

void

无返回值

保留关键字

goto

是关键字,但不能使用

const

是关键字,但不能使用

3、标识符
  1. 所有标识符都应该以字母(a-zA-Z),美元符($)或者下划线(_)开头
  2. 首字符之后可以是字母,美元符,下划线或者数字的任何字符组合
  3. 不能使用关键字作为变量名或者方法名
  4. 标识符是大小写敏感的
  5. 可以使用中文命名,但一般不建议这样使用,也不建议使用中文拼音。
//合法标识符
age、name、$student、_id
//非法标识符
123ab、%student
4、数据类型

Java是一门强类型语言,要求变量的使用要严格符合规定,所有变量都必须定义后才能使用。

java的数据类型可以分为基本类型引用类型


public class Demo1 {
    public static void main(String[] args) {
        //整型
        byte num1 = 10;
        short num2 = 20;
        int num3 = 30; //最常用的
        long num4 = 40L; //long类型要在数字后面加个L表示long类型
        
        //浮点型
        float num5 = 4.6F; //float类型要在数字后面加个F表示float类型
        double num6 = 3.14159265358979323;
        
        //字符型
        char name = 'A';
        // char name = 'AA',会报错,char只能定义单个的字符;
        //要定义多个字符时,使用String,String是一个类
        
        //boolean类型
        boolean flag = true;
        boolean flag2 = false;
        
    }
}
5、数据类型扩展
1、整型扩展
public class HelloWorld {
    public static void main(String[] args) {
        //整型扩展,进制表示
        //二进制 0b;八进制 0;十六进制 0x
        int num1 = 10;
        int num2 = 0b10; //二进制
        int num3 = 010; //八进制
        int num4 = 0x10; //十六进制
        System.out.println("十进制:"+num1);
        System.out.println("二进制:"+num2);
        System.out.println("八进制:"+num3);
        System.out.println("十六进制:"+num4);
    }
}
2、浮点型拓展
public class HelloWorld {
    public static void main(String[] args) {
        //浮点型扩展
        float num5 = 0.1f;
        double num6 = 1.0/10;
        System.out.println(num5==num6);//>>>false
    }
}

浮点型是有限的,是离散的,存在舍入误差,接近并不等于;

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

3、字符型拓展
public class HelloWorld {
    public static void main(String[] args) {
        //字符类拓展
        char aph = 'a';
        char name = '中';
        int nu = 97;
        System.out.println((int)aph);//>>> 97
        System.out.println((int)name);//>>> 20013
        System.out.println((char)nu);//>>> a
    }
}

所有字符本质上还是数字,对应ASCII码上的数值。

Unicode编码,占2个字节,表示0-65536个字符

强制转换,将ASCII码与字符进行转换。

6、数据类型转换

由于Java是强类型语言,所以要进行运算的时候,需要用到类型转换。

运算中,不同类型的数据先转换为同一类型才能进行运算。

类型转换可分为强制类型转换自动类型转换

img

强制类型转换:数据容量由高------->低

//强制转换语法
(数据类型)变量名
public class Demo3 {
    public static void main(String[] args) {
        int c = 97;
        char d = (char)(c+1);  //强制类型转换
        System.out.println(d); //>>>> b
    }
}

自动类型转换:数据容量由低------->高

public class HelloWorld {
    public static void main(String[] args) {
      char c = 'a';
      int d = c + 1;  //自动类型转换
      System.out.println(d);//>>>> 98
    }
}

数据转换注意点:

  1. 不能对布尔类型进行转换,布尔类型true和false是字面常量;
  2. 不能把对象类型转为不相干的类型;
  3. 把高容量类型转为低容量类型时使用强制转换,要注意内存泄漏。
  4. 浮点型与整型之间转换存在精度问题。
  5. 运算比较大的数的时候,需要注意内存泄漏问题(如有内存泄漏,需要在运算之前进行类型转换)
public class Demo3 {
    public static void main(String[] args) {
        int money = 10_0000_0000;
        int year = 20;
        int total = money*year;
        System.out.println(total);// >>>>  -1474836480 内存溢出
        long total2 = money*year;
        System.out.println(total2); // >>>> -1474836480 两个运算以后默认是int,此时已经内存溢出
        long total3 = (long)money*year;
        System.out.println(total3); // >>>> 20000000000 在运算前进行类型转换。
    }
}
7、变量
1、变量

顾名思义,就是指可以变化的量。

Java是强类型的语言,所以每个变量都必须声明其类型;

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

type varName [=value][{...,varName[=value],...}];
// 数据类型 变量名 = 值;可以使用逗号隔开来声明多个同类型的变量,但不建议这样定义变量。
int num1 = 1; 
int num2 = 2, num3 = 3;//不建议使用这种方面定义变量

注意事项:

  1. 每个变量都要声明类型,可以是基本类型,也可以是引用类型;
  2. 变量名必须是合法标识符;
  3. 变量声明是一条完整的语句;必须使用分号结尾。
2、变量作用域

类变量:独立于方法之外的变量,用 static 修饰。

实例变量:独立于方法之外的变量,不过没有 static 修饰。

局部变量:类的方法中的变量。

public class Demo4 {
    // 未初始化赋值,返回默认值0。
    static int num ; // 类变量
    int num2; // 实例变量

    // 方法
    public static void main(String[] args) {
        int num3 = 30;  //局部变量必须初始化后才能使用
        System.out.println(num); // >>> 0 类变量可以在类的内部任何地方被调用
        System.out.println(num3); // >>> 30 局部变量只能在方法内部被调用
        
        Demo4 demo4 = new Demo4();   //实例变量需要实例化对象以后才能被调用,独属于实例的
        System.out.println(demo4.num2); //>>> 0
    }
}

数据类型默认值:

基本数据类型,除boolean类型的默认值为false以外,其余类型的默认值为0或者0.0

char类型默认值为“\u0000”,转换为ASCII码就是0

public class Demo5 {
    public static void main(String[] args) {
        char a = '\u0000';
        System.out.println((int)a);//>>> 0
    }
}

引用数据类型的默认值为:null

局部变量:

  • 局部变量声明在方法、构造方法或者语句块中;
  • 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁
  • 访问修饰符不能用于局部变量;
  • 局部变量只在声明它的方法、构造方法或者语句块中可见;
  • 局部变量是在栈上分配的。
  • 局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。
3、常量(Constant)

声明并初始化以后,在程序运行过程中不允许被修改的量。

java的常量使用 final 修饰符来修饰

final 常量名 = 值;
final double PD = 2.539;

常量的命名一般使用大写字符。

public class Demo4 {
    //修饰符不分先后顺序
    static final int ID = 6659;
    final static int ID2 = 6659;

    // 方法
    public static void main(String[] args) {
		System.out.println(ID);
    }
}

变量命名规范:

  1. 所有变量、方法、类名的命名需见名知意;
  2. 类成员变量:首字母小写和驼峰原则:userName;
  3. 局部变量:首字母小写和驼峰原则:userAge;
  4. 常量:大写字母和下划线:MAX_PROFICE;
  5. 类名:首字母大写和驼峰原则:Car;
  6. 方法名:首字母小写和驼峰原则:addPeople()