▏标识符与关键字
入口方法
public class 类名{
public static void main(String[] args){
}
}
public 公共的 class 类 static 静态的 void 无返回值
main 主要的 String 字符串 args 参数 System 系统的
out 输出设备 in 输入设备 print 打印
| Java标识符的命名规则
- 标识符由字母、数字、下划线(_)、美元符号($)组成,没有长度限制
- 标识符的首字母必须是字母、下划线或美元符号
- 标识符是区分大小写的
- 常量通常以大写英文字母组成
- 类标识符通常以大写英文字母开始
- Java关键字、保留字不能作为用户自定义标识符使用
Java中的关键字和保留字
| 数据类型
数据类型 | 关键字 | 所占位数 | 默认值 | 取值范围 |
布尔型 | boolean | 8 | false | true,false |
字节型 | byte | 8 | 0 | -2^7~2^7-1 |
短整型 | short | 16 | 0 | -2^15~2^15-1 |
整型 | int | 32 | 0 | -2^31~2^31-1 |
长整型 | long | 64 | 0 | -2^63~2^63-1 |
单精度型 | float | 32 | 0.0 | 3.4e^-38~3.4e^38 |
双精度型 | double | 64 | 0.0 | 1.7e^-308~1.7e^308 |
字符型 | char | 16 | '\u0000' | '\u0000'~'\uFFFF' |
自动类型转换优先级
(byte、short、char)--> int --> long --> float -->double
| 运算符与表达式
算术运算符
分类 | 运算符 | 名称 | 示例 | 示例描述 |
双 目 运 算 符 | + | 加法 | A+B | A加B |
- | 减法 | A-B | A减B | |
* | 乘法 | A*B | A乘B | |
/ | 除法 | A/B | A除B | |
% | 取余 | A%B | 取余数 | |
单 目 运 算 符 | + | 正号 | +A | 正A |
- | 负号 | -A | 负A | |
++ | 自增 | ++A,A++ | 自加1 | |
-- | 自减 | --A,A-- | 自减1 |
关系运算符
运算符 | 名称 | 示例 | 示例描述 |
== | 等于 | A==B | A等于B吗? |
!= | 不等于 | A!=B | A不等于B吗? |
> | 大于 | A>B | A大于B吗? |
< | 小于 | A | A小于B吗? |
>= | 大于等于 | A>=B | A大于等于B吗? |
<= | 小于等于 | A<=B | A小于等于B吗? |
逻辑运算符
运算符 | 名称 | 示例 | 示例描述 |
! | 逻辑非 | !A | A为true时,结果为false |
&& | 逻辑与 | A&&B | A、B同为true,结果为true,否则为false |
|| | 逻辑或 | A||B | A、B同为false,结果为false,否则为true |
^ | 逻辑异或 | A^B | A、B同为true或false时,结果为false,否则为true |
赋值运算符
运算符 | 示例 | 示例表达式等价于 |
+= | A+=B | A=A+B(两数相加) |
-= | A-=B | A=A-B(两数相减) |
*= | A*=B | A=A*B(两数相乘) |
/= | A/=B | A=A/B(两数相除) |
%= | A%=B | A=A%B(两数求余) |
&= | A&=B | A=A&B(两数按位与) |
|= | A|=B | A=A|B(两数按位或) |
^= | A^=B | A=A^B(两数按位异或) |
<<= | A<<=B | A=A< |
>>= | A>>=B | A=A>>B(A带符号右移B位) |
>>>= | A>>>=B | A=A>>>B(A无符号右移B位) |
位运算符
分类 | 运算符 | 名称 | 示例 | 运算符说明 |
按 位 运 算 | ~ | 按位取反 | ~A | 1变成0,0变成1 |
& | 按位与 | A&B | 同为1,结果为1,否则为0 | |
| | 按位或 | A|B | 同为0,结果为0,否则为1 | |
^ | 按位异或 | A^B | 不同为1,相同为0 | |
移 位 运 算 | << | 左移 | A< | 移出高位补低位 |
>> | 带符号右移 | A>>a | 移出低位,逐次右移 | |
>>> | 无符号右移 | A>>>a | 符号位右移,高位补0 |
| 流程控制语句
// if语句语法:if(条件){}// if-else 语句语法:if(条件){}else{}// switch语句switch(表达式){ case 常量1:表达式1;break; case 常量2:表达式2 case 常量3:表达式3 default: 表达式n;}// while语句语法:while(表达式){// 执行语句}// do while语句do{// 语句}while(表达式);
举个例子吧
---------------猜大小-----------------import java.util. Scanner;public calss Demo{ public static void main(String[] args){ Scanner in = new Scanner(System.in); Random ComputerRandom = new Random(); int A- = ComputerRandom .nextInt(101); int number; do{ System.out.println("请猜一下电脑随机生成的随机数!"); number = in.nextInt(); if(number System.out.println("小了。。。"); }else if{ System.out.println("大了。。。"); } }while(number!=A); System.out.println("恭喜你,猜对了!"); }}
| 数组
栈区:存放函数的参数值,局部变量的值
优点:存取速度比堆区快
缺点:存在栈区的数据大小与生命周期必须是确定的,无灵活性
堆区:存放由new创建的对象和数组
优点:可以动态分配内存
缺点:要在运行时分配内存,运行速度慢一维数组
语法:数据类型 数组名[];
数据类型[] 数组名;
1、边声明边赋值:int[] arr = {12,4,33};
itn arr[] = {3,4,5};
2.动态地从键盘录入信息并赋值
Scanner in = new Scanner(System.in);
for(int i = 0;i<30;i++){
arr[i] = in.nextInt();
}二维数组
创建二维数组并指定数组大小
int [][] arr = new int[5][7];
举个例子吧
----------------- 求平均值-------------------import java.util.Scanner;public calss Demo{ public static void main(String[] args){ Scanner in = new Scanner(System.in); System.out.println("请定义学生的人数:"); int num = in.nextInt();//用来定义数组长度 int[] arr = new int[num]; int sum = 0; //记录总成绩 for(int i=0;i System.out.println("请输入第"+(i+1)+"个学生的成绩:"); arr[i] = in.nextInt(); sum+=arr[i]; } System.out.println(arr.length+"个学生的平均分是:"+sum/arr.length); } }
| 注释
1、单行注释 “//”
2.多行注释 以“ /*“ 开始以“ */ ”结束
3.文档注释 以“ /** ”开始以“ */ ”结束| 类与对象
1.必须使用new关键字创建对象
2.同一个类的每个对象有不同的成员变量的存储空间
3.同一个类的每个对象共享该类的方法| this关键字作用:
1.用来区分局部变量和成员变量同名的情况
2.代表它的所在函数(方法)所属对象的引用
3、构造函数之间的调用
4、构造函数之间的调用,this只能在第一行| 构造方法
1、使用new+构造方法创建新的对象
2、构造方法是定义在Java类中的一个用来初始化对象的函数
3、构造函数与类同名且没有返回值| 构造代码块
作用:给所有的对象进行初始化
举个例子吧
public calss Demo{ public static void main(String[] args){ Person A = new Person(); } } class Person{ String name; Person(){ System.out.println("我是无参构造方法"); } person(String name){ this.name=name; System.out.println("我是有参构造方法"); } { System.out.println("我是构造代码块"); } }
| static关键字作用:是一个修饰符,用于修饰成员(成员变量、成员方法)
1、被static修饰后只分配一个固定的空间,被所有对象共享
2.可以使用类名.静态成员进行访问特点:
1、随着类的加载而加载
2、优先于对象的存在
3、被所有的对象所共享
4、可以直接被类名所调用注意事项:
1.静态的方法只能访问静态的成员变量
2、非静态的方法既能访问静态也能访问非静态的成员
3、静态的方法中不可以定义(this、super)关键字
| 类
封装:生成set和get方法
继承(extends):子类拥有父类的成员,除被private修饰的外
多态:父类引用指向子类对象
多态的前提:
1、必须有继承或实现关系
2、必须有重写
接口(interface):是一个特殊的抽象类
注意:
1、接口不可以创建对象,需要被子类实现
2、接口中只能出现public访问修饰符
抽象类(abstract):
- 抽象方法一定要在抽象类中
- 抽象类和抽象方法必须要被abstract关键字修饰
- abstract只能修饰类和方法
- 抽象类不能被创建对象
- 抽象类中可以定义非抽象方法
- 子类如果只重写一部分的抽象方法,那么该子类还是一个抽象类
包(package):
作用:
1、对类进行分类管理
2、给类提供了多层命名空间
成员变量访问控制修饰符
类型 | private | protected | public | default |
所属类 | 可访问 | 可访问 | 可访问 | 可访问 |
同一个包中的其它类 | 不可访问 | 可访问 | 可访问 | 可访问 |
同一个包中的子类 | 不可访问 | 可访问 | 可访问 | 可访问 |
不同包中的子类 | 不可访问 | 可访问 | 可访问 | 不可访问 |
不同包中的非子类 | 不可访问 | 不可访问 | 可访问 | 不可访问 |