day07
一.面向对象:
面向对象的思想
面向过程(POP):
每一步细节需要自己考虑: 强调的是每一个功能的步骤
代表语言:c
面向对象(OOP):
A:是一种更符合我们思考习惯的思想
B:可以将复杂的事情变得简单化
C:将我们从执行者变成了指挥者
代表语言:java
面向对象案例
买电脑:
面向过程:
我要买电脑---我买电脑的意义----上网查对应的参数信息--去中关村---单价还价---最后电脑买了
面向对象:
我要买电脑-----班长去给我买个电脑---买回电脑就可以了
二.与事物的对应关系
事物 -> 类
事物的属性 -> 类的成员变量
事物的行为 -> 类的成员方法
三.如何创建以及使用类对象
1)类的定义
* 定义类:
* `public class 类名 {}`
* 定义类中的成员变量:
* `权限修饰符 数据类型 变量名;`
* 示例: `private String name;`
* 定义类中的构造方法:
* `权限修饰符 方法名(参数列表) {方法体}`
* 示例:
* 空参: `public Student() {}`
* 有参: `public Student(String name) { this.name = name; }`
* 定义类中的get/set方法(getter, setter):
* `权限修饰符 返回值类型 方法名() {方法体}`
* 示例:
* set方法: `public void setName(String name) { this.name = name; }`
* get方法: `public String getName() { return name; }`
* 定义其他成员方法
* 吃饭: `public boolean eat() { syso("吃饭"); }`
2)使用关键字`new
格式: `类名 对象名 = new 类名();
示例: `Student s = new Student()
四.一个对象的内存图演示
建一个对象时, 内存分别存放的内容
* 栈内存(stack):
* 进出顺序: 先进后出
* 存放调用的方法, 方法中有局部变量
* 堆内存(heap)
* 存放new出来的对象
* 成员变量: 在该对象的堆内存中保存一份独立的成员变量, 占有独立的内存空间
* 正因为都是独立的内存空间, 所以成员变量是属于某一个对象的, 不同对象的成员属性的值可能不相同
* 成员方法: 只在该对象的堆内存中保存方法区中成员方法的内存地址
* 方法区(method area)
* 存放类的字节码对象, 字节码对象包含整个类的定义
五.成员变量和局部变量的区别:
* 区别
* 定义位置不同
* 成员变量: 类中方法外
* 局部变量: 方法内, 或方法声明上(形参)
* 内存中的位置不同
* 成员变量: 堆内存
* 局部变量: 栈内存
* 生命周期不同
* 成员变量: 随着对象的创建而创建, 随着对象的销毁而销毁
* 局部变量: 随着方法的调用而存在, 随着方法的结束而销毁
* 初始化值不同
* 成员变量: 有初始值
* 局部变量: 没有初始值, 必须先定义赋值, 才能调用
* 作用域不同
* 成员变量: 所在类中可以使用
* 局部变量: 所在方法中可以使用
六. private关键字:
* 作用: 权限修饰符, 可以修饰类, 变量, 方法. 被private修饰的只能在本类访问到
* 一般成员变量要用private修饰, 并配合public的set/get方法使用
七. this关键字:
* 作用: 处理局部变量和成员变量重名的问题
* this是什么: 所在类的对象的引用
八.面向对象的三大特征:
* 封装
* 封装的原则:
* 将不需要对外提供的内容私有
* 将所有属性私有, 并提供public的set/get方法
* 封装的好处:
* 提高代码的安全性
* 提高代码的复用性
* 类是封装, 方法也是封装
* 继承
* 多态
九.面向对象:
定义了类:
JavaBean: 用于描述和封装数据, 便于数据的传递
Random/Scanner: 用于实现某种特定功能
注意:如果类中没有构造方法, 那就默认一个缺省的空参构造方法,如果给了有参的构造方
法,那么缺省的构造方法就会失效
day8
一.API介绍(帮助文档)
1)打开帮助按钮额
2)点击"显示" 找到输入框
3)在输入框中输入需要学习的内容
举例:Random
4)看包
java.lang 使用的时候是不需要导包的
5)看类的描述
Random是生成随机数的类
6)看构造方法
Random():无参构造方法
Random r=new Random();
7)看成员方法
public int nextInt(int n)产生一个随机数
看返回值类型,
看方法名
看参数类型
int number=r.nextInt(100);0~100的随机数,
[0,100)
二.通过API学习Scanner
1)Scanner sc=new Scanner(System.in);
sc.nextInt();//录入int类型的数
2)nextLine();方法: 录入一行字符串
三.String方法
1) String(String str)
String s=new String("hello");
2) String(char[] chs);
3)String (char[] chs,int index,int ,count);
4) 直接赋值 String s="hello";
方法:
1)length() 长度
2)charAt(int index) 索引对应的char值
3)indexOf(String str) 字符串对应的索引的第一个字符
4)subString(int start)...
subString(int start,int end) 截取 包左不包右
注意:1.数组的长度 是 length
2.String 是 length()
3.集合 是 size()
四.遍历String
String str="abcde";
for(int x=0;x<str.length();x++){
System.out.println(str.charAt(x));
}
5)char[] toCharArray() 转化为char数组
6)String toUpperCase() 转大写
7)String toLowerCase() 转小写
8) trim() 去两边的空格
9)String[] split(String str) 按照str进行切割,返回字符串数组
10)replaceFirst(String regex,String replacement) 替换
equals() startWith() endWith() contains()
练习:
反转字符串
1)把字符串倒过来遍历 定义一个新的字符串接收
2)用数组的方式
for(int x=0,y=arr.length-1;x<y;x++,y--){
char temp;
temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
String str=new String(arr);
3)StringBuilder sb=new StringBuilder(str);
sb.reverse();
String str1=sb.toString();
syso....
四.StringBuilder
描述:是一个可变的字符串,字符串缓冲区类
String 和StringBuilder的区别
String:不可变
StirngBuilder:长度可变
构造方法:
StringBuilder()
成员方法:
length();返回长度 实际值
capacity():默认容量 理论值
reverse(): 反转字符串
append(Sting str):加添,追加字符串(返回一个StringBuilder对象)
String和StringBuilder互换
StringBuilder sb=new StringBuilder();
String str=sb.toString();
------------------------------
sb=new StringBuilder(str);
|
|