变量
可以改变的数,称为变量。一般通过三部分来描述一个变量。
变量类型,变量名,变量值。三部分都是可以改变的,根据需要来确定。
变量的使用原则:
**就近原则**。尽量控制到最小范围。
变量的类型:
1.局部变量:定义在方法里,或者尿部代码块中。
必须手动刜始化,来分配内存。int a =5;
作用域也就是方法里或者尿部代码块里,方法运行完内存就释放了
2.成员变量:定义在类里
不用初始化,也会自动被初始化为默认值。
作用域是整个类中,类消失了,变量才释放。
各种类型的默认值:
byte 0
short 0
int 0
long 0L
float 0.0f
double 0.0d
boolean false
面向对象
面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)
主要思想是把构成问题的各个事务分解成各个对象,建立对象的目的不是
为了完成一个步骤,而是为了描叙一个事物在整个解决问题的步骤中的行为
面向对象程序设计中的概念主要包括:
对象、类、数据抽象、继承、动态绑定、数据封装、多态性、消息传递。
三大特征
1.封装性,把相关的数据封装成一个“类”组件
2.继承性,是子类自动共享父类属性和方法,这是类之间的一种关系
3.多态,增强软件的灵活性和重用性
类和对象
类
1.Java 语言最基本单位就是类,类似于类型
2.类是一类事物的抽象
3.可以理解为模板戒者设计图纸
对象
每个对象具有三个特点:对象的状态,对象的行为 和 对象的标识
1.对象的状态用来描述对象的基本特征
2.对象的行为用来描述对象的功能
3.对象的标识是指对象在内存中都有一个唯一的地址用来和其他对象区分开来
4.类是一类事物的抽象,对象是具体的实现
类和对象的创建和使用
通过 class 关键字创建类,通过 new 关键字创建对象
public class Demo{}
Demo a = new Demo();
引用
保存一个实例的内存地址, 用引用变量, 可以控制,调用一个实例
this 特殊引用:,保存当前实例的地址
构造方法
新建实例时, 执行的一个特殊方法,java的类中,必须有构造方法
如果自己不定义构造方法, 编译器编译代码时,会添加默认的构造方法
public class Demo(){
public Demo(){
}
}
API
Application Programming Interface 应用编程接口
一切可以调用的东西,都是 API
new Scanner(System.in).nextInt()
new Random().nextInt(4)
String
字符串:java.lang.String:字符串不可变
String封装 char[] 数组的对象
创建字符串:
char[] a = {'a', 'b', 'c', 'd'};
String s = new String(a);
String d = "abcd";
常用方法:
equals() 比较字符内容
charAt(i) 方位指定位置的字符
length() 字符长度
indexOf(子串) 查找第一个子串的位置,找不到返回-1
indexOf(子串, start) 从指定位置向后找
lastIndexOf(子串) 从后向前找
trim() 去除两端的空白字符
substring(start) 截取[start,length)子串
substring(start, end) 截取[start, end)
StringBuilder
封装 char[] 数组,是一个可变的字符序列,提供一组对内部字符修改的方法,
常用来代替字符串,做高效率的字符串连接运算
常用方法:
append(),在内部数组中,追加新的字符,内部数组,默认初始容量是 16
存满,容量翻倍+2
正则表达式 Regex
Regular Expression 规则表达式 正确的字符串格式规则
一般用来判断用户输入,是否符合格式要求
常用的正则表达式:
[a-z] 小写字母
\d 数字[0-9]
\D 排除数字[^0-9]
\w 单词字符[a-zA-Z_0-9]
\W 排除单词字符
\s 空白字符
\S 排除空白字符
. 任意字符
? 0或1个
* 0 到 多 个
+ 1 到 多 个
^ 匹配字符串头部位置
$ 配置字符串尾部位置
字符串的匹配运算方法:
matches(正则) 判断是否匹配指定的表达式
split(正则) 用匹配的子串来拆分字符串
replaceAll(正则, 子串) 把匹配的子串,替换成指定的子串
字符串常量池
第一次使用一个字符串的字面值,在"字符串常量池"中新建实例
再次使用相同字面值时,直接访问常量池中存在的实例,而不会新建
方法重载和方法重写
1.构造方法重载(同名不同参)overlord
public class Demo(){
private int id;
private String name;
public Demo(){
}
public Demo(int id){
this.id=id;
}
public Demo(int id,String name){
this.id=id;
this.name=name;
}
}
2.方法重写 override
主要用于实现父类的方法。
从父类继承的方法,不满足子类需要,可以在子类中重新定义,重新编写这个方法
可以用 super.xxx() 调用父类中同一个方法的代码,来进一步减少代码重复
继承
作用: 代码重用, 复用
单继承:
一个类,只能有一个直接父类
一个父类,可以有多个子类
多继承:
一个接口,可以继承多个接口
不继承:
构造方法私有化的类和被final修饰的类不能被继承
private成员变量不能被继承
子类实例化:
先调用父类的构造方法,创建父类实例
在调用子类的构造方法,创建子类实例
两个实例绑定,整体作为一个实例
调用成员时,先找子类再找父类