7.20 day4 jave学习

6.对象
字符变量

char c = 'a';//单个字符用单引号
c++;//b
int i = 'A' - 'Z';//两个字母之间的距离
逃逸字符:
\b 回退一格
\t 到下一个表格位(经常用来对齐)
\n 换行
\r 回车

包裹类型:
判断,找最大最小值,大小写变换…
Math.abs(-12); 绝对值
Math.round(); 四舍五入
Math.pow(a,b); a 的b次幂

字符串变量
new = 创建

String s = new String("a string");//创建一个String的对象
1
用"a string"初始化这个对象
创建管理这个对象的变量s
+链接两个字符串

比较两个字符串是否相等,要用.equals来比较
“==” 作比较是指的是是否管理同一个字符串

“=="比较的是是不是同样的东西
equals比较内容是否相等

1.类与对象

对象是实体,需要被创建,可以为我们做事情
类是规范,根据类的定义来创建对象
对象 = 属性 + 服务
数据:属性或者状态
操作:函数

创建对象:对象变量是对象的管理者

定义在函数内部的变量是本地变量
本地变量的生存期和作用域都是函数内部
成员变量的生存期是对象的生存期,作用域是类内部的成员函数

构造函数
这个成员函数的名字和类的名字相同,则在创建这个类的每一个对象的时候会自动调用这个函数 -> 构造函数
这个函数不能有返回类型

函数重载
一个类可以有多个构造函数,只要它们的参数表不同
创建对象的时候给出不同的参数值,就会自动调用不同的构造函数
通过this()还可以调用其他构造函数
一个类里的同名但参数不同的函数构成了重载关系

.
2.对象交互
把数据和对数据的操作放在一起 -> 封装
private 只有这个类里面的成员函数可以使用,针对类而不是针对对象。
public 任何人都可以访问
如果什么都不加,则是friendly,包内可以使用
一个单元最多有一个public的类
import.package.class 如果用到其他包的类就要import
import.package.* 引入包的所有东西(有风险,可能会重名之类的)

static 类变量,不属于成员变量

3.对象容器

泛型容器类

import java.util.ArrayList;
...
private ArrayList<String> notes = new ArrayList<String>();
容器类有两个类型:

容器的类型
元素的类型
ArrayList

对象数组中的每个元素都是对象的管理者而非对象本身。
对象数组的for-each循环

ArrayList<String> a = new ArrayList<String>();
a.add("fist");
a.add("second");
for (String s : a) {//对a数组里面的每一个string s
System.out.println(s);
}
HASH表对应

//硬币名字得到机器
import java.util.Scanner;
import java.util.HashMap;
public class Coin {
//HASH表键值对
private HashMap<Integer,String> coinnames = new HashMap<Integer,String>();
//创建coin的构造器
public Coin() {
coinnames.put(1, "penny");
coinnames.put(10, "dime");
coinnames.put(25, "quarter");
coinnames.put(50, "half-dolor");
}

public String getName(int amount) {
return coinnames.get(amount);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int amount = in.nextInt();
Coin coin = new Coin();
String name = coin.getName(amount);
System.out.println(name);
}

}
构造函数是一种特殊的函数。其主要功能是用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。构造函数与类名相同,可重载多个不同的构造函数。

4.继承与多态
子类和子类型:
类定义了类型
子类定义了子类型
子类的对象可以被当做父类的对象来使用(赋值给父类的对象,传递给需要父类对象的函数,放进存放父类对象的容器里)

子类型和容器:子类的对象可以放在存放父类对象的容器里

多态变量
当把子类的对象赋给父类的变量的时候就发生了向上构造

造型cast
子类的对象可以赋值给父类的变量,java中不存在对象对对象的赋值

向上造型
拿一个子类的对象当做父类的对象来使用
向上造型是默认的,不需要运算符
向上造型总是安全的

Object类的函数

toString()
equals()
传进来的是object形式,所以就不能直接比较了
利用向下造型使cc再次变成CD

@Override//告诉编译器有和父类相同的函数
public boolean equals(Object arg0) {
// TODO Auto-generated method stub
CD cc = (CD)arg0;//向下造型,cc代表了cd
return artist.equals(cc.artist);
}

String words = line.split(" ");//将一行句子分成每个单词

if( words[0].equals("help")){
...}
else if( words[1].equals("go")){
...}
5.设计原则
用封装来降低耦合

类与类之间的关系称作耦合
耦合越低越好,保持距离是形成良好代码的关键
6.抽象与接口
抽象函数—表达概念而无法实现具体代码的函数
抽象类—表达概念而无法构造出实体的类
带有abstract修饰符的函数
有抽象函数的类一定是抽象类
抽象类不能制造对象
但是可以定义变量
任何继承了抽象类的非抽象类的对象可以付给这个变量

实现抽象函数:
继承自抽象类的子类必须覆盖父类中的函数
否则自己成为抽象类

只有c++才支持多继承

接口:接口是纯抽象类

所有的成员函数都是抽象函数
所有的成员变量都是public static final
接口规定了长什么样,但不管内部
实现接口

类用extends,接口用implements
类可以实现很多接口
接口可以继承接口但是不能继承类
接口不能实现接口
面向接口的编程方式

程序设计时先定义接口再实现类
任何需要在函数间传入传出的一定是接口而不是具体的类
是java成功的关键之一,可以允许多人完成项目
代码膨胀很快
7.控制反转

Swing

匿名类

在new对象的时候给出的类的定义形成了匿名类
匿名类可以继承某类,也可以实现某接口
Swing的消息机制广泛使用匿名类

posted @ 2021-07-20 21:55  清梦韶华  阅读(27)  评论(0编辑  收藏  举报