文章的相关代码及补充已经更新在下载管理,不需要积分即可下载
1.类和对象
1)面向对象(Object Oriented Programming,OOP):将项目拆分成类和接口
- 构建类,类之间有关联
- 构建对象,对象之间有关联
- 配合完成功能,互相调用行为
面向过程(Procedure Oriented Programming,POP):将项目拆分成步骤
类有属性(变量、数组)、方法(变量、数组、流程控制)、代码块;
类是作为一个模板(泛指),对象是创建具体事物(特指);
类是对象的类型,不同于int类型,具有方法;
类是虚拟的,只是一个模板。
2)对象同时有属性和方法,相辅相成
- 定义类 属性和方法
- 创建对象 属性和方法(具体变量、流程控制)
- 适用对象 调用方法
//创建stu对象
int[] arr = new int[5]; int i = 0;
//类Student是对象stu的(数据)类型
Student stu = new Student();
2.单例设计模式--一个类只能new一个对象
成员变量和局部变量的作用域、初始值不同
1)成员变量:整个类内部可见,会给一个初始值
2)局部变量:仅限于定义它的方法,不会赋予初值
方法:public + 返回值类型 + 方法名 + (参数列表) { 方法体 }
public void show() {
System.out.println(schoolName + "***" + classRoomNum + "***" + roomNum);
}
3.参数传递
StringBuffer 比String更强大
== 与 equals 的用法,equals会比较每个字符
字符串连接:一般使用 "+" ,或者concat()
String str = "zbd ";
String str2 = "zbd ";
System.out.println(str.length());//4
System.out.println(str.trim().length());//3 空格放中间是4 trim 去掉前后空格
System.out.println(str == str2);//true
String str3 = new String("zbd ");
System.out.println(str == str3);//flase 地址不同
System.out.println(str == str3.intern());//true
System.out.println(str.equals(str3));//true
String str = "hello.java";
//判断是否有 . ,不能是第一位
//从点开始到结束只能是java
System.out.println(str.indexOf(".java"));
System.out.println(str.substring(str.indexOf(".")+1).equals("java"));
System.out.println(str.substring(0,1));
//判断邮箱
String email = "458@163.com";
//是否有 . 和 @
if(email.indexOf("." ) == -1 || email.indexOf("@" ) == -1 ) {
System.out.println("没有 . 和 @");
}
// . 和 @不能是首位和末尾
else if(email.indexOf("." ) == 0 || email.indexOf("." ) == email.length()-1 || email.indexOf("@" ) == 0 || email.indexOf("@" ) == email.length()-1 ) {
System.out.println(". 和 @不能是首位和末尾");
}
// . 在 @ 之后
else if(email.indexOf("." ) < email.indexOf("@" )) {
System.out.println(" . 在 @ 之前");
}
// . 和 @不能挨着
else if(email.indexOf("." ) - email.indexOf("@" ) < 2) {
System.out.println(" . 和 @不能挨着");
}
else {
System.out.println("成功");
}
String str = "7844 45 79 21 656 xahin zhan 拆";
String[] res = str.split(" ");//返回数组
for (int i = 0; i < res.length; i++) {
System.out.println(res[i]);
}
StringBuffer str =new StringBuffer("7844 45 79 21 656 xahin zhan 拆");
String[] res = str.split(" ");//返回数组
for (int i = str.length() - 3; i >0 ; i=i-3) {
str.insert(i,',');
}
4.类的特征之一--封装
将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问
- 隐藏类的实现细节
- 方便加入控制语句
- 方便修改实现
- 只能通过规定方法实现
步骤:
设置private; 创建共有的getter/setter; 在getter/setter中加入属性控制语句。
public class Pet {
private String name = "名字";
private int health = 100;
private int love = 0;
public Pet() {
System.out.println("无参构造");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getHealth() {
return health;
}
public void setHealth(int health) {
this.health = health;
}
public int getLove() {
return love;
}
public void setLove(int love) {
this.love = love;
}
public void print() {
System.out.println("我的姓名是:" + this.name + ",我的健康值为:" + this.health + ",我与主人的亲密度为:" + this.love);
}
}
5.类的特征之一 -- 继承
针对代码冗余,可以方便修改代码,减少代码量
上述代码为父类,则下面代码为子类,使用关键词extends来继承
public class Penguin extends Pet{
private String sex = "Q仔";
public Penguin(String name, String sex) {
this.setName(name);//私有属性访问 间接通过方法访问
this.sex = sex;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
子类对于父类的方法可以重写/覆盖
public void print() {
super.print();
System.out.println("**************");
}
调用构造方法需要new对象
四种访问权限修饰符