一、变量
1、Java命名规范:
1.驼峰命名法 studentName (不报错)
2.标识符由字母数字和特殊符号组成(报错)
注意:不能以数字开头
特殊符号仅仅局限为:¥ $ _
3.类名的首字母要大写(不报错)
4.不能使用关键字来命名(报错)
5.不建议使用中文来命名(不报错)
2、变量:可以改变的量(数据)。
1、本质:是一个存储空间,存储的是用户需要用到的数据。
2、为什么要使用变量的存在?
通过变量来存储用户需要的数据,程序通过操作变量来间接的达到操作数据的目的。
比直接操作数据更加方便和安全。
3、如何去使用变量?
语法: 数据类型 变量名;---------声明一个变量
初始化一个变量:声明 + 赋值。 int a = 1;
*经典面试题:声明一个变量的同时有没有开辟存储空间?
声明一个变量的同时开辟了存储空间。
因为:变量存在的意义就是存储数据,如果没有开辟存储空间的话,该变量不能被赋值。
该变量将没有意义。
*经典面试题:没有被初始化的变量能不能被直接访问?
不能,否则会报编译错误。
二、数据类型
1、Java中的数据类型: 基本数据类型 、引用类型
Java中的基本数据类型8种:
整数类型:byte(字节型)< short(短整型)< int(整形) < long(长整型)
浮点型(小数类型):float double
float(单精度浮点型):
double(双精度浮点型)常用:
字符型:char
char类型可以存储一个中文汉字,占2个字节。
布尔型(开关类型):boolean
引用类型:JDK类库自带的,用户自定义的。
2、字符串的链接:
+:连接符的使用,字符串与字符串之间的+是连接符
字符串旁边的+都是连接符
3、数据类型的转换:
1、byte short char 在进行数学运算的时候,先自动转化为int类型的整数,然后再进行数学运算。
2、在Java中,所有整数的直接量 都默认是int类型。
三、运算符
1、运算符:
赋值运算符: =
数学运算符:+ - * / %
高级赋值运算符:+= -= *= /= %=
关系运算符:> < >= <= == != 运算的最终结果是bool类型
逻辑运算符:&& !
位移运算符:>> <<
三目运算符:表达式1 ?表达式2 : 表达式3
*经典面试题:&& 与 & 的异同点:
相同点:
二者都满足 见false为 false。表达式1 && 表达式2,表达式1和表达式2
有任意一个为false,整体的结果为false,二者都为true,结果才为true。
不同点:
&& :当表达式1为false时候,表达式2不执行。
& : 无论表达式1是true,还是false,表达式2都依然执行。
||:短路或 &&:短路与
四、结构语句:
1、条件控制
if(表达式){
语句块1;
}else{
语句块2;
}
如果条件表达式的结果为true,执行语句块1,否则执行语句块2。
if(表达式){
}else if(表达式){
}else{
}
2、多分支结构(选择分支结构)switch case
switch(获取值){//获取值:整数//1.6之后可以字符串
case 值1:
语句块1;
break;
case 值2:
语句块2;
break;
...
default:
语句块n;
}
3、循环结构
1、while循环
语法结构:
while(循环条件){
循环体;
}
循环条件:可以是一个布尔类型的表达式,也可以是布尔类型的值
while循环特点:
不限次数的循环,满足某一条件的时候,跳出循环。
while循环嵌套:
while(){//外循环
while(){
//内循环}
}
2、do while循环
语法结构:
do{
循环体;
}while(循环条件);
//特点:先执行一次,然后再进行判断是否满足循环。
3、for循环
语法结构:
for(循环变量;循环条件;循环变量变化方式){
循环体;
}
4、跳出循环
break:跳出当前循环。
continue:终止本次循环,进入下次循环。
return:直接结束所有循环(结束当前循环所在的方法,return后面的内容,都不再执行)
五、数组
1、创建数组(数组的初始化)有两种方式: 静态创建,动态创建
静态创建:创建数组的同时,开辟存储空间,且给存储空间赋值。
int [] arr {1,2,3,4,5};
动态创建:数据类型 [] 数组名 = new 数据类型[数组长度]
ex: int [] arr = new int [4];
2、数组的复制:
1.假复制
2.数组元素的复制:System.arraycopy(源数组 ,源数组的起始位置 ,目标数组 ,目标数组的起始位置,复制的元素个数);
3.数组的复制:Arrays.copyOf(源数组, 长度);
4.修改数组的长度
3、数组的排序:
Arrays.sort(数组名);
六、方法
1、语法结构:
修饰符 static 返回值类型 方法名(参数列表){
方法体;
}
2、含义:
返回值类型:
数据类型: 基本数据类型 引用类型
关键字:void
方法名:符合Java的命名规范
参数列表:可以有0个或多个参数
方法体:是方法的具体执行内容
七、面向对象
1、特征
封装、继承、多态
2、构造方法(函数)/构造器:
定义:方法名和类名相同,且没有返回值类型的方法,叫做构造方法。
无参构造方法:创建对象
有参构造方法:创建对象 传值
作用:1.创建对象。
2.传值。
*经典面试题:面向对象的特征
封装、继承、多态
3、类和对象
类(类型):是具有相同特性和行为的对象的抽象。//Person
对象:是类的一个代表(实例化)//类的实例化 //Person中的某一个人 (名字 学号 年龄)
对象可以是抽象的,也可以是非抽象的。
一切皆为对象。//能看到的,看不到的(空气)
4、继承 关键字:extends
子类 继承 父类:Son extends Father
子类可以继承(拥有)父类可被继承的功能和属性(私有化除外),
同时还可以创建自己的功能和属性。
注意:一个类只能 继承一个父类。
在Java当中,继承关系是单继承关系。
Object是所有类的父类。(顶级父类)//默认继承
5、多态:
是同一个行为具有不同表现形式的能力。(同一种事物的不同表现形式),多体现在方法上面。
*经典面试题:实现多态的两种机制是什么?并分别进行解释说明。
重载和重写
重载:在同一个类当中,方法名相同,参数列表不同,叫做重载。
重写(覆盖):在继承关系当中,方法签名相同(方法名和参数列表都相同),方法体不同,叫做重写。
6、向上造型:父类声明子类对象。
父类声明子类对象:ex:Father s = new Son();
该对象(S)拥有的属性和方法都是父类的。但是当调用子类重写父类的方法时,
编译期间执行的是父类的方法,运行期间执行的是子类的方法。
7、this、super
this关键字:指代当前对象。
this(参数列表):可以调用本类里面的其他构造方法,具体调用哪个构造方法,
根据this方法中的参数列表来确定。
特殊情况:this方法只能放在构造方法的第一行。
super:super指代父类的对象。
super方法,可以调用父类的构造方法,根据super方法的参数列表确定具体调用哪一个构造方法
*经典面试题:this()和super()可不可以同时出现?
不能。因为this()和super()都必须放在构造方法的第一行。有冲突,二者不能同时出现
8、抽象:
关键字:abstract
抽象类:用abstract修饰的类叫做抽象类。
抽象方法:用abstract修饰的方法叫做抽象方法。
能够定义(存储)抽象方法的类一定是抽象类。√
抽象类里面一定要有抽象方法。×
9、接口:
接口是一个特殊的抽象类,接口中的方法都是抽象方法,和常量。(解决类单一继承问题)
关键字:interface
类和接口的关系是实现,类可以实现接口。
10、final:
final修饰变量,不能被更改
final修饰的方法不能被重写
final修饰的类:不能被继承
static final配合修饰的是常量
String类被final修饰
八、线程
创建线程的两种方式:继承Thread类、实现Runnable接口
线程的生命周期:
创建线程(两种方式)----就绪状态(start方法,启动线程)-----运行状态(执行run方法)--
阻塞(休眠)状态---死亡状态(线程结束)
九、图形用户界面
public class JFrameTest {
/**
* 创建一个800×400的窗体,并设置背景颜色。
*/
public static void main(String[] args) {
// 1、创建一个窗体(JFrame)的对象。
JFrame frame = new JFrame();
// 3、设置窗体的宽高为800×400px。
frame.setSize(600, 400);
// 4、设置窗体的坐标位置居中。 frame.setLocation(200, 100);
frame.setLocationRelativeTo(null);
// 5、设置默认关闭按钮功能(关闭界面的同时结束程序)。
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 6、设置窗体的大小不可被更改。
frame.setResizable(false);
// 7、取消窗体边框。
frame.setUndecorated(true);
/*// 8、设置窗体的背景颜色。
frame.setBackground(Color.BLACK);*/
// 8、创建一个面板对象panel。
JPanel panel = new JPanel();
// 9、设置面板颜色。(自制/选择)
panel.setBackground(new Color(182,10,200));//panel.setBackground(Color.BLACK);
// 10、窗体添加面板。
frame.add(panel);
// 2、设置窗体可见。
frame.setVisible(true);
}
}