一、认识环境
基础概念
1、JDK:Java开发工具包,开发Java代码必备
2、JRE:Java运行时环境,运行Java必备
3、JVM:Java虚拟机
4、集成环境IDEA
二、变量和类型
1、什么是变量:表示一些可变的概念(运行时可以改变),创建一个变量就会分配相应内存空间
2、什么是常量:有字面值常量 int类型 long类型 double类型 float类型 Boolean类型 String类型 char类型
3、类型
(1)内置类型(四类八种)
整形:byte、short、int、long,浮点数:double、float,字符:char,布尔:boolean
(2)引用类型
引用相当于低配指针
字符串:String,数组,类
(3)类型之间的转换
类型转换的概念
隐式类型转换:把一个表示范围小的类型赋给表示范围大的类型,例如:把int类型赋给long类型
强制类型转换:大范围赋给小范围
类型提升
4、变量的作用域
局部变量作用域在当前代码块
成员变量作用域受访问权限控制
private:类内部能访问,类外部不能访问
default:类内部能访问,同一个包中的类也能访问,其他类不能访问
Protected:类内部能访问,子类和同一个包中的类可以访问,其他类不能访问
public:类内部和类的调用者都能访问
变量的命名规范
硬性要求:变量必须由数字、字母、下划线组成
软性要求:见名知意、驼峰命名法、最好使用英文单词名词词性
三、运算符
1、算术运算符
-
-
- / %
2、关系运算符
< <= > >= == != 它们的返回值类型都是Boolean类型
3、逻辑运算符
&&(左侧为假即为假) ||(左侧为真即为真) !支持短路求值
- / %
-
& | 没有短路求值 操作数是Boolean类型
4、按位运算符
& | ~(取反)^(异或) 操作数是整数类型
5、移位运算
<< 左移一位相当于*2
右移一位相当于/2 最左侧补符号位
逻辑右移,最左侧无脑补0
四、数组
数组:批量创建一组相同类型的变量
创建方式:
(1)int[] a = {1,2,3}
(2)int[] a = new int[] {1,2,3}
(3)int[] a = new int[4]
数组的使用:
取下标,从0开始
获取长度.length
数组作为方法的参数
5、方法
用于描述对象的行为
方法的创建:修饰限定符+返回值类型+方法名+参数列表+方法体
方法的调用:方法名+实参列表
方法的重载:方法名相同,方法在同一个作用域中,参数个数不同,参数类型不同,返回值类型不影响重载
构造方法:在实例化对象的时候会被自动调用的方法,方法名和类名相同,用于对象实例化。
6、类和对象
1、简单认识类:类主要是用来对一个实体(对象)来进行描述的。
2、类定义的格式:
class 类名{
field;//成员属性
method;//成员方法
}
一个.Java文件中允许有多个类,其中一个(不能多个)用public修饰的类类名必须与文件名严格相同,同一个包中不能有两个相同的类。
3、类的实例化
定义:用类类型创建对象的过程叫做类的实例化,在Java中用new关键字配合类名的实例化。
注意:
new关键字用于创建一个对象的实例
使用 . 来访问对象中的成员和方法
同一个类可以有多个对象
4、类的成员
类的成员可以包括以下:字段、方法、代码块、内部类和接口等。
(1)字段/属性/成员变:在类中,方法外部定义的变量我们称为“字段”或“属性”或成员变量。
(2)static关键字
a)修饰属性,Java静态属性和类相关,和具体的实例无关
b)修饰方法,如果在任何方法上引用static关键字,此方法称为静态方法。
静态方法属于类而不属于类的对象
可以直接调用静态方法而无需创建类
静态方法可以访问静态数据成员,并且可以更改静态数据成员的值。
5、代码块
定义:使用“{ }”定义的一段代码
1)普通代码块:定义在方法中的代码块
2)构造代码块:定义在类中的代码块(不加修饰符)。也叫实例代码块,一般用于初始化实例成员变量。
3)静态代码块:使用static定义的代码块,一般用于初始化静态成员变量。
面向对象编程
1、继承
使用继承的目的就是为了让代码能够很好的被重复使用。
被继承的类称为:父类、超类、基类,继承于父类的类称为子类。
语法规则
基本语法:
class 子类 extends 父类{
}
使用extends指定父类
Java中一个子类只能继承一个父类
子类继承父类中的所有public的字段和方法,对于private中的字段和方法是不能访问的
子类的实例中,也包含着父类的实例,可以用super关键字得到父类实例的引用
2、组合
和继承一样,组合也是一种表达类之间关系的方式,也是能够达到代码重用的效果。组合并没有涉及到特殊的语法(诸如extends这样的关键字子),仅仅将一个类作为另一个类的字段。
public class student{
……}
public class teacher{
……}
public class school{
public student[] students;
public teacher[] teacher;
}
// 表示组合的语义类似于 什么中有什么
3、多态
1)向上转型:一个父类的引用,指向一个子类的实例,这种方法称为向上转型。向上转型的写法类似于is—a的语义。
向上转型发生的时机:
直接赋值:
Bird bird =new Bird(“圆圆”)
可以写成以下形式
Bird bird=new Bird(“圆圆”);
Animal bird2=new Bird(“圆圆”)
或者
Animal bird2=new Bird("圆圆")
// bird2是一个实例父类(Animal)的引用,指向一个子类(Bird)的实例。
以上形式成为直接赋值
方法传参:
public class Test{
public static void main(String[] args){
Bird bird = new Bird("圆圆");
feed(bird);
}
public static void feed(Animal animal){
animal.eat("谷子");
}
}
方法返回:
public class Test{
public static void main(String[] args)
Animal animal=findMyAnimal();
}
public static Animal findMyAnimal(){
Bird bird=new Bird("圆圆");
return bird;
}
y}
2)动态绑定
在Java中,调用某个类的方法,究竟是执行了哪段代码(是父类方法中的代码,还是子类中的代码),要看这个引用指向的是父类对象还是子类对象,这个过程是程序运行时决定的(而不是编译期),因此称为动态绑定。
3)方法重写
子类实现父类的同名方法,并且参数的类型和个数完全相同,这种情况称为 覆写/重写/覆盖。
重写的注意事项
a)普通方法可以重写,static修饰的静态方法不能重写
b)重写中子类的方法访问权限不能低于父类的访问权限
c)重写的方法返回值类型不一定和父类的方法相同