黑马程序员技术交流社区

标题: java基础班笔记 [打印本页]

作者: 可轩    时间: 2018-4-2 22:39
标题: java基础班笔记
什么是面向过程
面向过程,其实就是面向着具体的每一个步骤和过程,把每一个步骤和过程完成,然后由这些功能方法相互调用,完成需求
什么是面向对象
面向对象思想就是不断的创建对象,使用对象,指挥对象做事情。(如果有对象,直接用对象,对我们直接提供服务
面向过程特点与面向对象特点
A:面向过程:
强调的是过程,所有事情都需要自己完成
B:面向对象:
是一种更符合我们思想习惯的思想(懒人思想,我把事情自己不做,交给别人去做)
   可以将复杂的事情简单化(对使用者来说简单了,对象里面还是很复杂的)
将我们从执行者变成了指挥者角色发生了转换
类与对象概述:
A:我们学习编程是为了什么
   为了把我们日常生活中实物用学习语言描述出来
B:我们如何描述现实世界事物
  属性 就是该事物的描述信息(事物身上的名词)
  行为 就是该事物能够做什么(事物身上的动词)
C:Java中最基本的单位是类,Java中用class描述事物也是如此
成员变量 就是事物的属性
  成员方法 就是事物的行为
D:定义类其实就是定义类的成员(成员变量和成员方法)
  a:成员变量 和以前定义变量是一样的,只不过位置发生了改变。在类中,方法外。
  b:成员方法 和以前定义方法是一样的,只不过把static去掉,后面在详细讲解static的作用。
E:类和对象的概念
  a:类:是一组相关的属性和行为的集合(我们班所有的同学都具备相同的属性和行为,比如:姓名,年龄,学习,这样就把所有的学生成为学生类)
  b:对象:是该类事物的具体体现(说某个同学时,他都具备自己特有的属性和行为)
成员变量和局部变量区别
A:在类中的位置不同
     成员变量:类中,方法外
     局部变量:方法中或者方法声明上(形式参数)
    B:在内存中的位置不同
     成员变量:堆内存
     局部变量:栈内存
    C:生命周期不同
     成员变量:随着对象的创建而存在,随着对象的消失而消失
     局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
    D:初始化值的问题
     成员变量:有默认值
     局部变量:没有默认值。必须先定义,赋值,最后使用
private关键字
A:private关键字:
a:是一个权限修饰符。
b:可以修饰成员(成员变量和成员方法)
c:被private修饰的成员只在本类中才能访问
private最常见应用
A:把成员变量用private修饰
B:提供对应的getXxx()/setXxx()方法
封装概述
是面向对象三大特征之一
是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改
封装原则:
将不需要对外提供的内容都隐藏起来。
把属性隐藏,提供公共方法对其访问。
成员变量private,提供对应的getXxx()/setXxx()方法
好处:
通过方法来控制成员变量的操作,提高了代码的安全性
把代码用方法进行封装,提高了代码的复用性
this关键字由来和使用:
A:this:代表所在类的对象引用
方法被哪个对象调用,this就代表那个对象
B:什么时候使用this呢
局部变量和成员变量重名
构造方法:
主要用来给对象的数据进行初始化
构造方法格式
a:方法名与类名相同
b:没有返回值类型,连void都没有
c:没有具体的返回值
构造方法注意事项与重载
如果你不提供构造方法,系统会给出默认构造方法
如果你提供了构造方法,系统将不再提供
构造方法也是可以重载的,重载条件和普通方法相同

快速使用API步骤:
A:打开帮助文档
B:点击显示,找到索引,看到输入框
C:你要学习什么内容,你就在框框里面输入什么内容
   举例:Random
D:看包
java.lang包下的类在使用的时候是不需要导包的
E:看类的描述
  Random类是用于生成随机数的类
F:看构造方法
  Random():无参构造方法
  Random r = new Random();
G:看成员方法
    public int nextInt(int n):产生的是一个[0,n)范围内的随机数
  调用方法:
   看返回值类型:人家返回什么类型,你就用什么类型接收
   看方法名:名字不要写错了
   看形式参数:人家要几个参数,你就给几个,人家要什么数据类型的,你就给什么数据类型的
   int number = r.nextInt(100);

String类概述
A:"abc"是String类的一个实例,或者成为String类的一个对象
B:字符串字面值"abc"也可以看成是一个字符串对象
C:字符串是常量,一旦被赋值,就不能被改变
D:字符串本质是一个字符数组
String类的构造方法
String(String original):把字符串数据封装成字符串对象
  String(char[] value):把字符数组的数据封装成字符串对象
  String(char[] value, int index, int count):把字符数组中的一部分数据封装成字符串对象
String类的判断功能
boolean equals(Object obj):比较字符串的内容是否相同
boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
boolean startsWith(String str):判断字符串对象是否以指定的str开头
boolean endsWith(String str):判断字符串对象是否以指定的str结尾
String类的转换功能
char[] toCharArray():把字符串转换为字符数组
String toLowerCase():把字符串转换为小写字符串
String toUpperCase():把字符串转换为大写字符串
StringBuilder类概述
StringBuilder:是一个可变的字符串。字符串缓冲区类。  
String和StringBuilder的区别:
  String的内容是固定的
  StringBuilder的内容是可变的
StringBuilder类的常用方法
   A:构造方法:
      StringBuilder()
   B:成员方法:
     public int capacity():返回当前容量 (理论值)
    public int length():返回长度(已经存储的字符个数)
public StringBuilder append(任意类型):添加数据,并返回自身对象
public StringBuilder reverse():反转功能
对象数组概述
A:基本类型的数组:存储的元素为基本类型
int[] arr={1,2,3,4}
B:对象数组:存储的元素为引用类型
  Student[] stus=new Student[3];
Student代表一个自定义类
Stus数组中stus[0],stus[1],stus[2]的元素数据类型为Student,
   都可以指向一个Student对象
集合类之ArrayList
我们学习的是面向对象编程语言,而面向对象编程语言对事物的描述都是通过对象来体现的。
  为了方便对多个对象进行操作,我们就必须对这多个对象进行存储,而要想对多个对象进行存储,
   就不能是一个基本的变量,而应该是一个容器类型的变量。
    到目前为止,我们学习过了哪些容器类型的数据呢?StringBuilder,数组。
    StringBuilder的结果只能是一个字符串类型,不一定满足我们的需求。
    所以,我们目前只能选择数组了,也就是我们前面学习过的对象数组。
    但是,数组的长度是固定的,适应不了变化的需求,那么,我们该如何选择呢
   这个时候,java就提供了集合类供我们使用。
  
集合类的特点:
   长度可变。
  
  ArrayList<E>:
    大小可变数组的实现
  
    <E>:是一种特殊的数据类型,泛型。
   怎么用呢?
   在出现E的地方我们使用引用数据类型替换即可
    举例:ArrayList<String>,ArrayList<Student>
ArrayList删改查方法
A:获取元素
     public E get(int index):返回指定索引处的元素
B:集合长度
     public int size():返回集合中的元素的个数
C:删除元素
     public boolean remove(Object o):删除指定的元素,返回删除是否成功
     public E remove(int index):删除指定索引处的元素,返回被删除的元素
D:修改元素
public E set(int index,E element):修改指定索引处的元素,返回被修改的元素
IO流概述及分类
  IO流用来处理设备之间的数据传输
    Java对数据的操作是通过流的方式
    Java用于操作流的类都在IO包中
  流按流向分为两种:输入流,输出流
FileWriter向文件中写数据
A:FileWriter向文件中写数据操作步骤:
       a:使用FileWriter流关联文件
       b:利用FileWriter的写方法写数据
       c:利用FileWriter的刷新方法将数据从内存刷到硬盘上
       d:利用FileWriter的关流方法将释放占用的系统底层资源
B:FileWriter方法:
构造方法
FileWriter(String fileName) 传入一个文件的路径
成员方法
void write(String str) 向文件中写str
void flush()  将内存中的数据刷新到文件中
void close()  关流释放系统底层资源
FileWriter其它写方法
void write(String str):写一个字符串数据
void write(String str,int index,int len):写一个字符串中的一部分数据
void write(int ch):写一个字符数据,这里写int类型的好处是既可以写char类型的数据,也可以写char对应的int类型的值。'a',97
void write(char[] chs):写一个字符数组数据
void write(char[] chs,int index,int len):写一个字符数组的一部分数据
如何实现数据的追加写入?
    FileWriter(String fileName, boolean append)
FileReader:
FileReader(String fileName):传递文件名称
  输入流读文件的步骤:
   A:创建输入流对象
  B:调用输入流对象的读数据方法
   C:释放资源
  java.io.FileNotFoundException: fr.txt (系统找不到指定的文件。)
缓冲流的基本使用
  BufferedWriter:将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
BufferedReader:从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取
创建输出缓冲流对象
  
  BufferedWriter bw = new BufferedWriter(new FileWriter("bw.txt"));
  BufferedReader br = new BufferedReader(new FileReader("FileWriterDemo.java")
缓冲流复制文本文件的两种方式
第一种方式:使用缓冲流不使用字符数组
第二种方式:使用缓冲流使用字符数组
3.3 缓冲流的特有方法使用
BufferedWriter
  void newLine():写一个换行符,这个换行符由系统决定,不同的操作系统newLine()方法使用的换行符不同
  BufferedReader
  String readLine():一次读取一行数据,但是不读取换行符






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2