面向对象编程思想
1. 什么是面相对象编程思想
2. Java语言用于描述现实生活中的事物
事物:属性 行为
类:成员变量 成员方法
如何使用这个学生类
类名 对象名 = new 构造方法名();
对象名.成员...
一个对象的内存图
两个对象共用同一个方法区的内存图
两个引用指向同一个对象的内存图
private
私有的
修饰成员变量 、 成员方法
被private关键字所修饰的内容只能够在本类中可以使访问
被private修饰的成员变量,一般都会对外界提供公有的访问方式,如:setXxx()、getXxx()方法
注意:setXxx()、getXxx()方法是否有参数列表、返回值类型
成员变量和局部变量同名时,局部变量采用就近原则。
this关键字:
当前对象的引用
哪个对象来调用我,我就代表哪个对象
JavaBean对象中的成员方法内部都隐藏了一个this。表示哪个对象中的方法。
面向对象的特征
封装
原则:将不需要对外暴露的内容隐藏。
隐藏实现细节,对外提供公有的访问方式。
好处:
提高代码的安全性(外界不能直接访问)、复用性(重复使用特性,比如:方法)
封装就是private么? 不是。private仅仅是封装的一种体现形式。
构造方法:
格式:
修饰符 类名(){}
构造方法格式的注意事项:
是否可以有return? 可以
是否可以有返回值? 不可以
是否可以有void? 不可以
方法名必须与类名一致么? 必须一致
构造方法的注意事项:
1、类中没有定义任何构造方法,系统会默认提供空参构造
2、类中有定义有参构造,但没有定义空参构造,系统不会免费提供空参构造
3、构造方法可以重载
成员变量赋值:
1. setXxx()
2. 调用构造方法(注意:一旦调用构造方法,表示重新创建新对象,并不能够代表修改成员变量的值。 表示:杀人)
标准的JavaBean对象:
必须要提供:
成员变量
构造方法
成员方法
sc.nextLine() 获取字符
数组(字符数组)->字符串:String s1 = new String(数组)
截取数组(字符数组):String s1 = new String(数组,开始截取的下标,截取多少个)
s1.equals 判断字符串值是否相等
s1.equalsIgnoreCase :忽略大小写比较
s1.startsWith()
s1.endWith()判断是否以某个字符串开头或结尾
s1.length() 获取字符串长度(字母个数)
s1.charAt(字符串索引) 获取指定索引处的某个字符
s1.indexOf(字符串):获取S1中,第一次出现参数中字符串的位置索引,如果没有,返回-1,
s1.substring(索引):从索引处截取字符串,一直截取到最后
s1.substring(索引,end):从索引出开始,到end处进行截取,包括索引,不包括end对应的字符
s1.toCharArray() :字符串变成字符数组
s1.toLowerCase();小写
s1.toUpperCase():大写
s1.trim():去掉左右两端的空格(不包括中间的) 小红
s1.split(某个字符串):根据某个字符串,把原字符串分割成数组
StringBuilder sb = new StringBuilder()
sb.capacity() 获取sb容器的容量(理论值)
sb.length():获取里面字符串的长度
sb.append(内容):向字符串中追加数据(返回的是对象)
sb.reverse():字符串翻转
StringBuilder转成字符串
sb.toString();返回一个字符串
字符串转换成StringBuilder
new的时候,直接把字符串放进去就好了
new StringBuilder(字符串/字符串变量)
sb. charAt(int index) :获取指定索引处的某个字符
sb. delete(int start, int end) 删除
ArrayList<E>
* <E>:在出现E的地方我们使用引用数据类型替换即可
*
* 格式:
* ArrayList<String> 变量名 = new ArrayList<String>();
* 调方法:array.add();
*
* 添加元素:
* public boolean add(E,e):添加元素
* public void add(int index,E element):在指定的索引处添加一个元素
*
* 获取元素:
* public E get(int index):返回指定索引处的元素
* 集合长度:
* public int size():返回集合中的元素的个数
* 删除元素:
* public boolean remove(Object o):删除指定的元素,返回删除是否成功
* public E remove(int index):删除指定索引处的元素,返回被删除的元素
* 修改元素:
* public E set(int index,E elememt):修改指定索引处的元素,返回被修改的元素
集合类 sh = new 集合类(参数)、
ArrayList<对象(对象名字和字符串对象)> array = new ArrayList<对象>();
array.size()获取长度(元素个数)
array.add("内容"):向这个ArrayList中添加内容
array.add(索引,内容):向指定所以处添加内容,原来的内容被挤到后面一个元素去了
array.get(索引):得到索引处对应的值---(相当于charAt)
* FileWriter:(写数据)
* //(反斜线):需要两个 \(正斜线):需要一个
*
* 1.FileWriter fw = new FileWriter("文件名")
* 抛出异常
* 1>.与文件相关联
* 2>.让IO流引用指向这个对象
* 3>.如果系统中没有这个文件,通过输出流对象会帮我们自动创建该文件
* 如果系统中有这个文件,会把之前的文件清空,再重新写入新的内容
*
* 2.变量名.write("内容");
*
* 3.变量名.flush();
*
* 4.变量名.close();
*
* 输出流写数据的步骤:
* A:创建输出流对象
* B:调用输出流对象的写数据方法,并刷新缓冲区
* C:释放资源
*
* 相对路径:相对当前项目而言,在项目的根目录下
* 绝对路径:以盘符开始的路径
*
* close()和flush()方法的区别:
* flush():刷新缓冲区.该流对象可以继续使用
* close():先刷新缓冲区,然后通知系统释放资源.该流对象不可以在继续使用
*
* FileWriter方法:
* void write(String str):写一个字符串数据
* void write(String str,int index, int len):写一个字符串中的一部分数据
* void write(int ch):写一个字符数据
* int类型的好处:可以写char类型的数据,也可以写char对应的int类型的值
* void write(char[] chs):写一个字符数组数据
* void write(char[] chs.int index,int len):写一个字符数组的一部分数据
*
* 如何实现换行:("\n")
* Windows:\r\n
* Linux:\n
* Mac:\r
*
* 如何实现数追加写入:
* FileWriter(String fileName,boolean append)
*
* FileReader:(读数据 --> 输入流)
* FileReader(String fileName):传递文件名称
*
* 输入流读文件的步骤:
* A:创建输入流对象
* B:调用输入流对象读数据方法
* C:资源释放
*
* 异常:java.io.FileNotFoundException: fr.txt(系统找不到指定的文件)
*
* 文件复制:
*
* 数据源:FileWriterDemo.java ---读数据-- FileReader
*
* 目的地:Copy.java ---写数据-- FileWriter
*
* FileReader fr = new FileReader("DemoIO.java");
FileWriter fw = new FileWriter("Copy.java");
int ch;
while((ch = fr.read()) != -1){
fw.write(ch);
}
fw.close();
fr.close();
*
* 一次读取一批:
* FileReader fr = new FileReader("Test.java");
char[] ch = new char[1024];
int len;
while((len = fr.read(ch)) != -1){
System.out.println(len);
System.out.print(new String(ch,0,len));
}
fr.close();
*
* BufferedWriter(new FileWriter("Test.java");
* BufferedReader(new FileReader("c.txt");
*
* 缓冲流的特殊功能:
* BufferedWriter:
* void newLine():
写一个换行符,这个换行符由系统决定,不同的操作系统newLine()方法使用的换行符不同
*
* BufferedReader:
* String readLine():
一次读取一行数据,但是不读取换行符 |
|