Java基础语法
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、标识符
- 所有标识符都应该以字母(a-zA-Z),美元符($)或者下划线(_)开头
- 首字符之后可以是字母,美元符,下划线或者数字的任何字符组合
- 不能使用关键字作为变量名或者方法名
- 标识符是大小写敏感的
- 可以使用中文命名,但一般不建议这样使用,也不建议使用中文拼音。
//合法标识符
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
}
}
数据转换注意点:
- 不能对布尔类型进行转换,布尔类型true和false是字面常量;
- 不能把对象类型转为不相干的类型;
- 把高容量类型转为低容量类型时使用强制转换,要注意内存泄漏。
- 浮点型与整型之间转换存在精度问题。
- 运算比较大的数的时候,需要注意内存泄漏问题(如有内存泄漏,需要在运算之前进行类型转换)
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;//不建议使用这种方面定义变量
注意事项:
- 每个变量都要声明类型,可以是基本类型,也可以是引用类型;
- 变量名必须是合法标识符;
- 变量声明是一条完整的语句;必须使用分号结尾。
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);
}
}
变量命名规范:
- 所有变量、方法、类名的命名需见名知意;
- 类成员变量:首字母小写和驼峰原则:userName;
- 局部变量:首字母小写和驼峰原则:userAge;
- 常量:大写字母和下划线:MAX_PROFICE;
- 类名:首字母大写和驼峰原则:Car;
- 方法名:首字母小写和驼峰原则:addPeople()