Java学习day1
2018-04-02 23:10
204 查看
今天,我正式开始了Java的学习生活,今天是第一天给大家分享一下今天学习的内容.
面向对象(基础回顾,继承)
基础内容回顾
Java中的数据类型
基本类型:4类8种
整数:byte(1) short(2) int(4) long(8)
浮点型: float(4) double(8)
字符:char(2)
布尔:boolean(1)
基本类型对应引用类型:
int------>Integer
char-------->Character
Float-------->Float
引用类型:
数组
类:Scanner,Random,String,StringBuilder,ArrayList
抽象类
接口
Java中的方法定义
在main方法下的方法
public static 返回值类型 方法名(参数类表){
方法体
}
在一个类中的成员方法,必须通过对象调用的
public 返回值类型 方法名(参数列表){
方法体
}
String类的常用方法
1. 构造方法(3个)
public String(String str);//创建了一个字符串对象
String str = “abc”;//也是一个字符串对象
public String(char[] chs);//把char数组转成字符串
public String(char[] chs,int startIndex,int len);//把char数组转成字符串
public String(byte[] bs);
public String(byte[] bs,int startIndex,int len);
2.判断功能(4个)
public boolean equals(其他字符串);//比较两个字符串内容 == 用来比较地址
public boolean equalsIgnoreCase(其他字符串);//忽略大小写比较两个字符串内容
public boolean startSwitch(字符串);//判断开头
public boolean endsWith(字符串)//判断结尾
3.获取功能(5个)
public int length();//获取长度
public char charAt(int index);//获取指定下标的字符
public char charAt(int index);//获取指定下标的字符
public int indexOf(String/char);//查找字符串或者字符,第一次出现的下标
public String substring(int startIndex);//截取字符串从开始下标到末尾
public String substring(int startIndex, int endIndex);//截取字符串从开始下标到结束下标
包含开始下标,不包含结尾
4.转换功能(3个)
public char[] toCharArray();//转成字符数组
public String toUpperCase();//转大写
public String toLowerCase();//转小写
5.去空格和分割(2个)
public String trim();//去两端空格
public String[] split(切割符);//切割
6.替换方法
public String replace(String oldStr,String newStr);
public String replace(char oldchar,char newchar);
StringBuilder:一般用来字符的拼接
1.StringBuilder和String区别
String不可变
StringBuilder可变
2.常用方法(3个)
添加方法
public StringBuilder append(任意类型);//添加一个元素到StringBuilder中,返回原来对象本身,支持链式编程
反转方法
public StringBuilder reverse();//反转StringBuilder 的内容,,返回原来对象本身,支持链式编程
转成String类型
public String toString();//把StringBuilder转成字符串对象
以后如果字符串拼接 用StringBuilder,字符串暂时用String
集合ArrayList***(重点)*****
1.集合的作用?
用来存储多个对象
2.如何确定集合中的数据类型
ArrayList<String> names = new ArrayList<String>();//这里的<String>称为泛型
3.集合的常用方法
a.构造方法(注意类型)
public ArrayList();//创建一个空集合,默认容量是10个元素
public ArrayList(int initcapacity);//创建一个空集合.默认容量是指定的值
//比如
public ArrayList();//10 20 40 80 160 320 640 1280 2560
public ArrayList(1000);//1000 2000 4000
b.增删改查
i.添加方法
public boolean add(E e);//添加一个元素到集合的末尾
public void add(int index,E e);//添加一个元素到集合的指定位置
ii.删除方法
public boolean
4000
remove(元素)//删除某一个元素
public E remove(下标)//删除指定下标的元素,返回被删除的那个元素
iii.修改方法
public E set(下标,新元素);//把指定下标的元素改为指定的新元素,返回被修改的旧元素
iv.获取方法
public int size();//获取集合的长度(并非容量!!!!!!!!!!!!!)
public E get(下标);//获取集合中指定下标的元素
IO流(字符流)
字符流: 该流只能操作字符
字节流: 该流能操作一切任何文件
FileWriter :
构造方法
public FileWriter("文件路径")
成员方法:5个
public void write(int ch);//将一个字符/码值写到文件中
public void write(String str);//写一个字符串到文件
public void write(String str,int startIndex,int len);//写一个字符串的一部分到文件
public void write(char[] chs);//写一个字符数组到文件
public void write(char[] chs,int startIndex,int len);//写一个字符数组的一部分到文件
BufferedWriter
构造方法:
public BufferedWriter(FileWriter fr);
成员方法:5个
public void write(int ch);//将一个字符/码值写到文件中
public void write(String str);//写一个字符串到文件
public void write(String str,int startIndex,int len);//写一个字符串的一部分到文件
public void write(char[] chs);//写一个字符数组到文件
public void write(char[] chs,int startIndex,int len);//写一个字符数组的一部分到文件
写一个跨平台的换行符:
public void newLine();//写一个跨平台的换行符,通过C语言的宏定义判断到底是哪一个系统平台
FileReader:
构造方法:
public FileReader(文件路径);
成员方法: 2个
public int read();//一次读取一个字符
public int read(char[]);//一次读取一个字符数组,返回本次实际读取到的字符
BufferedReader
构造方法:
public BufferedReader(FileReader fr);
成员方法: 2个
public int read();//一次读取一个字符
public int read(char[]);//一次读取一个字符数组,返回本次实际读取到的字符
public String readLine();//特有的一次读取一行的方法
路径问题:
a.相对路径:
相对于当前项目的根目录
b.绝对路径:
以盘符开头
自动创建文件问题:
只有FileWriter和BufferedWriter会自动创建文件
面向对象回顾
1.什么是面向对象
面向对象是一种解决问题的编程思想,区别于面向过程而言
2.面向对象中设计的两个重要的名词
a.类:
具有相同属性和行为的一群事物的统称
b.对象:
类中的一个具体存在
我们以类作为模板 创建 一个个对象,所有对象中都具有类中定义成员变量和成员方法
3.定义类的格式
public class 类名{
//成员变量
private int age;//数据类型 变量名
//提供对应的set/get方法
....
//成员方法
public 返回值类型 方法名(参数){}
}
4.创建对象的格式
a.默认构造:
一般来说 如果一个类不写任何构造,编译器会自动生成一个默认的没有参数的构造
b.有参构造
一把来说 我们自己会提供一个全参构造,但是有了全参构造必
5.对象的内存图(见图)
6.this关键字
a.this的作用
区分成员变量和局部变量同名的情况
this.xxx 访问是成员变量
xxx 访问是就近原则的变量
b.this的本质
this是一个对象,当前对象,谁调用方法,方法中的this就是谁
7.方法的参数和返回值 可以是 各种数据类型
今日内容讲解
1.匿名对象
a.什么是匿名对象?
只创建对象,而不用变量来接收
b.匿名对象的格式
new Person();//匿名对象
new Person(10,"曹操");//匿名对象
c.匿名对象的特点
一个匿名对象 只能使用一次
除此之外 匿名对象和正常对象 没有区别
匿名对象也可以访问成员变量 也可以调用成员方法
匿名对象可用 可不用,用的好处仅仅是简化代码
d.匿名对象的高级使用
i.匿名对象作为方法实际参数
ii.匿名对象作为方法返回值
2.继承****************************
面向对象的三大特性:
封装,继承,多态
a.什么是继承
在现实生活中:
子辈 继承了 父辈的财产
在Java中的继承:只两个类之间的关系
一个子类/派生类/subclass 可以继承 父类/基类/超类/superclass 的成员变量/成员方法
b.继承的格式
关键字:extends,表示继承
public class 子类 extends 父类{
//子类中就自动的拥有 父类中所有的可继承的成员变量/成员方法
//所谓的可继承 实际上指的是非私有的,不是private修饰的
}
实际上 子类 可以继承 父类的一切成员,但是私有成员子类虽然继承了,但是不能直接使用
所以我们平常就会说 子类继承了父类中所有的可继承的成员变量/成员方法
私有子类不能用? 难道父类就不需要封装了吗??
还是需要封装
因为 get/set方法不是私有的,子类可以继承可以直接用,这就相当于间接使用了私有变量
c.继承后子类的特点
1).子类 可以继承父类的所有成员变量和成员方法
2).子类 不可以 直接使用父类继承过来的私有变量,私有方法
3).子类 是不会继承 父类的构造
d.继承的注意事项
1)继承要合理:
只有子类 属于 父类的一种 才能继承
2)父类中成员必须是共性的内容
子类继承了共性,可以添加自己个性的内容
3)子类可以直接使用的 是父类中非私有成员(非私有 != 公有)
e.继承的优点
提高的代码的复用性
提高开发效率
3.继承后子类访问成员变量的特点
a.如果子父类的成员变量不同名,没有任意歧义
b.如果子父类的成员变量同名
通过子类对象访问时,优先找子类自己的,
如果子类没有该成员变量,再去找父类的
如果父类没有该成员变量,编译器找不到直接报错...
4.继承后子类访问成员方法的特点
a.如果子父类的成员方法不同名,没有任意歧义
b.如果子父类的成员方法同名
通过子类对象调用时,优先调用子类自己的,
如果子类没有该成员方法,再去找父类的
如果父类没有该成员方法,编译器找不到直接报错...
总结:
继承中,子类访问成员变量或者成员方法时,
都是采用就近原则,即先访问子类自己的,如果没有在访问父类的继承而来的
5.Java中继承的特点
a.Java只支持单继承
一个子类 只能有一个直接的 父类 (一个儿子 只能有一个亲爸爸)
但是 一个父类 可以有多个子类
b.Java支持多层继承
一个子类可以一个父类, 该父类也可以自己的父类, ....
c.父类定义了继承树中共性内容,子类定义了该类个性内容
为什么Java不支持多继承:
因为会产生调用的不确定性
扩展:java中类的设计原则
1.向上抽取原则
案例: 定义4个类 猫狗树花
a.多个类的共同属性
b.多个类的共同方法
b..步骤
i.定义父类
步骤1.在父类中抽取出多个子类的共同成员变量和成员方法
ii.定义子类继承父类
步骤2.子类自动拥有父类中可继承的成员
iii.子类可以定义自己的特有方法
步骤3.提高了扩展性
2.Java的组合模式(目前已经删除)
a.组合模式的概念
一个类的成员变量 是另外一个类的类型
案例:
家庭类
public class Family{
//丈夫
Man zf;//Man 就是另外一种自定义类型
//妻子
Woman qz;//Woman 就是另外一种自定义类型
//孩子
Child hz;//Child 就是另外一种自定义类型
}
电脑
public class Computer{
//CPU
CPU cpu;//CPU 就是另外一种自定义类型
//显卡
XK xk;//XK 就是另外一种自定义类型
//网卡
//硬盘
/ //声卡
}
b.组合模式的代码体现
预习
1.方法重写
2.抽象类
面向对象(基础回顾,继承)
基础内容回顾
Java中的数据类型
基本类型:4类8种
整数:byte(1) short(2) int(4) long(8)
浮点型: float(4) double(8)
字符:char(2)
布尔:boolean(1)
基本类型对应引用类型:
int------>Integer
char-------->Character
Float-------->Float
引用类型:
数组
类:Scanner,Random,String,StringBuilder,ArrayList
抽象类
接口
Java中的方法定义
在main方法下的方法
public static 返回值类型 方法名(参数类表){
方法体
}
在一个类中的成员方法,必须通过对象调用的
public 返回值类型 方法名(参数列表){
方法体
}
String类的常用方法
1. 构造方法(3个)
public String(String str);//创建了一个字符串对象
String str = “abc”;//也是一个字符串对象
public String(char[] chs);//把char数组转成字符串
public String(char[] chs,int startIndex,int len);//把char数组转成字符串
public String(byte[] bs);
public String(byte[] bs,int startIndex,int len);
2.判断功能(4个)
public boolean equals(其他字符串);//比较两个字符串内容 == 用来比较地址
public boolean equalsIgnoreCase(其他字符串);//忽略大小写比较两个字符串内容
public boolean startSwitch(字符串);//判断开头
public boolean endsWith(字符串)//判断结尾
3.获取功能(5个)
public int length();//获取长度
public char charAt(int index);//获取指定下标的字符
public char charAt(int index);//获取指定下标的字符
public int indexOf(String/char);//查找字符串或者字符,第一次出现的下标
public String substring(int startIndex);//截取字符串从开始下标到末尾
public String substring(int startIndex, int endIndex);//截取字符串从开始下标到结束下标
包含开始下标,不包含结尾
4.转换功能(3个)
public char[] toCharArray();//转成字符数组
public String toUpperCase();//转大写
public String toLowerCase();//转小写
5.去空格和分割(2个)
public String trim();//去两端空格
public String[] split(切割符);//切割
6.替换方法
public String replace(String oldStr,String newStr);
public String replace(char oldchar,char newchar);
StringBuilder:一般用来字符的拼接
1.StringBuilder和String区别
String不可变
StringBuilder可变
2.常用方法(3个)
添加方法
public StringBuilder append(任意类型);//添加一个元素到StringBuilder中,返回原来对象本身,支持链式编程
反转方法
public StringBuilder reverse();//反转StringBuilder 的内容,,返回原来对象本身,支持链式编程
转成String类型
public String toString();//把StringBuilder转成字符串对象
以后如果字符串拼接 用StringBuilder,字符串暂时用String
集合ArrayList***(重点)*****
1.集合的作用?
用来存储多个对象
2.如何确定集合中的数据类型
ArrayList<String> names = new ArrayList<String>();//这里的<String>称为泛型
3.集合的常用方法
a.构造方法(注意类型)
public ArrayList();//创建一个空集合,默认容量是10个元素
public ArrayList(int initcapacity);//创建一个空集合.默认容量是指定的值
//比如
public ArrayList();//10 20 40 80 160 320 640 1280 2560
public ArrayList(1000);//1000 2000 4000
b.增删改查
i.添加方法
public boolean add(E e);//添加一个元素到集合的末尾
public void add(int index,E e);//添加一个元素到集合的指定位置
ii.删除方法
public boolean
4000
remove(元素)//删除某一个元素
public E remove(下标)//删除指定下标的元素,返回被删除的那个元素
iii.修改方法
public E set(下标,新元素);//把指定下标的元素改为指定的新元素,返回被修改的旧元素
iv.获取方法
public int size();//获取集合的长度(并非容量!!!!!!!!!!!!!)
public E get(下标);//获取集合中指定下标的元素
IO流(字符流)
字符流: 该流只能操作字符
字节流: 该流能操作一切任何文件
FileWriter :
构造方法
public FileWriter("文件路径")
成员方法:5个
public void write(int ch);//将一个字符/码值写到文件中
public void write(String str);//写一个字符串到文件
public void write(String str,int startIndex,int len);//写一个字符串的一部分到文件
public void write(char[] chs);//写一个字符数组到文件
public void write(char[] chs,int startIndex,int len);//写一个字符数组的一部分到文件
BufferedWriter
构造方法:
public BufferedWriter(FileWriter fr);
成员方法:5个
public void write(int ch);//将一个字符/码值写到文件中
public void write(String str);//写一个字符串到文件
public void write(String str,int startIndex,int len);//写一个字符串的一部分到文件
public void write(char[] chs);//写一个字符数组到文件
public void write(char[] chs,int startIndex,int len);//写一个字符数组的一部分到文件
写一个跨平台的换行符:
public void newLine();//写一个跨平台的换行符,通过C语言的宏定义判断到底是哪一个系统平台
FileReader:
构造方法:
public FileReader(文件路径);
成员方法: 2个
public int read();//一次读取一个字符
public int read(char[]);//一次读取一个字符数组,返回本次实际读取到的字符
BufferedReader
构造方法:
public BufferedReader(FileReader fr);
成员方法: 2个
public int read();//一次读取一个字符
public int read(char[]);//一次读取一个字符数组,返回本次实际读取到的字符
public String readLine();//特有的一次读取一行的方法
路径问题:
a.相对路径:
相对于当前项目的根目录
b.绝对路径:
以盘符开头
自动创建文件问题:
只有FileWriter和BufferedWriter会自动创建文件
面向对象回顾
1.什么是面向对象
面向对象是一种解决问题的编程思想,区别于面向过程而言
2.面向对象中设计的两个重要的名词
a.类:
具有相同属性和行为的一群事物的统称
b.对象:
类中的一个具体存在
我们以类作为模板 创建 一个个对象,所有对象中都具有类中定义成员变量和成员方法
3.定义类的格式
public class 类名{
//成员变量
private int age;//数据类型 变量名
//提供对应的set/get方法
....
//成员方法
public 返回值类型 方法名(参数){}
}
4.创建对象的格式
a.默认构造:
一般来说 如果一个类不写任何构造,编译器会自动生成一个默认的没有参数的构造
b.有参构造
一把来说 我们自己会提供一个全参构造,但是有了全参构造必
5.对象的内存图(见图)
6.this关键字
a.this的作用
区分成员变量和局部变量同名的情况
this.xxx 访问是成员变量
xxx 访问是就近原则的变量
b.this的本质
this是一个对象,当前对象,谁调用方法,方法中的this就是谁
7.方法的参数和返回值 可以是 各种数据类型
今日内容讲解
1.匿名对象
a.什么是匿名对象?
只创建对象,而不用变量来接收
b.匿名对象的格式
new Person();//匿名对象
new Person(10,"曹操");//匿名对象
c.匿名对象的特点
一个匿名对象 只能使用一次
除此之外 匿名对象和正常对象 没有区别
匿名对象也可以访问成员变量 也可以调用成员方法
匿名对象可用 可不用,用的好处仅仅是简化代码
d.匿名对象的高级使用
i.匿名对象作为方法实际参数
ii.匿名对象作为方法返回值
2.继承****************************
面向对象的三大特性:
封装,继承,多态
a.什么是继承
在现实生活中:
子辈 继承了 父辈的财产
在Java中的继承:只两个类之间的关系
一个子类/派生类/subclass 可以继承 父类/基类/超类/superclass 的成员变量/成员方法
b.继承的格式
关键字:extends,表示继承
public class 子类 extends 父类{
//子类中就自动的拥有 父类中所有的可继承的成员变量/成员方法
//所谓的可继承 实际上指的是非私有的,不是private修饰的
}
实际上 子类 可以继承 父类的一切成员,但是私有成员子类虽然继承了,但是不能直接使用
所以我们平常就会说 子类继承了父类中所有的可继承的成员变量/成员方法
私有子类不能用? 难道父类就不需要封装了吗??
还是需要封装
因为 get/set方法不是私有的,子类可以继承可以直接用,这就相当于间接使用了私有变量
c.继承后子类的特点
1).子类 可以继承父类的所有成员变量和成员方法
2).子类 不可以 直接使用父类继承过来的私有变量,私有方法
3).子类 是不会继承 父类的构造
d.继承的注意事项
1)继承要合理:
只有子类 属于 父类的一种 才能继承
2)父类中成员必须是共性的内容
子类继承了共性,可以添加自己个性的内容
3)子类可以直接使用的 是父类中非私有成员(非私有 != 公有)
e.继承的优点
提高的代码的复用性
提高开发效率
3.继承后子类访问成员变量的特点
a.如果子父类的成员变量不同名,没有任意歧义
b.如果子父类的成员变量同名
通过子类对象访问时,优先找子类自己的,
如果子类没有该成员变量,再去找父类的
如果父类没有该成员变量,编译器找不到直接报错...
4.继承后子类访问成员方法的特点
a.如果子父类的成员方法不同名,没有任意歧义
b.如果子父类的成员方法同名
通过子类对象调用时,优先调用子类自己的,
如果子类没有该成员方法,再去找父类的
如果父类没有该成员方法,编译器找不到直接报错...
总结:
继承中,子类访问成员变量或者成员方法时,
都是采用就近原则,即先访问子类自己的,如果没有在访问父类的继承而来的
5.Java中继承的特点
a.Java只支持单继承
一个子类 只能有一个直接的 父类 (一个儿子 只能有一个亲爸爸)
但是 一个父类 可以有多个子类
b.Java支持多层继承
一个子类可以一个父类, 该父类也可以自己的父类, ....
c.父类定义了继承树中共性内容,子类定义了该类个性内容
为什么Java不支持多继承:
因为会产生调用的不确定性
扩展:java中类的设计原则
1.向上抽取原则
案例: 定义4个类 猫狗树花
a.多个类的共同属性
b.多个类的共同方法
b..步骤
i.定义父类
步骤1.在父类中抽取出多个子类的共同成员变量和成员方法
ii.定义子类继承父类
步骤2.子类自动拥有父类中可继承的成员
iii.子类可以定义自己的特有方法
步骤3.提高了扩展性
2.Java的组合模式(目前已经删除)
a.组合模式的概念
一个类的成员变量 是另外一个类的类型
案例:
家庭类
public class Family{
//丈夫
Man zf;//Man 就是另外一种自定义类型
//妻子
Woman qz;//Woman 就是另外一种自定义类型
//孩子
Child hz;//Child 就是另外一种自定义类型
}
电脑
public class Computer{
//CPU
CPU cpu;//CPU 就是另外一种自定义类型
//显卡
XK xk;//XK 就是另外一种自定义类型
//网卡
//硬盘
/ //声卡
}
b.组合模式的代码体现
预习
1.方法重写
2.抽象类
相关文章推荐
- 安卓学习记录-java-day1
- java程序性能优化学习笔记day1
- java web学习笔记day1
- Android学习之java基础篇day1
- Java基础学习——day1
- Java 学习 ----day1——(3)标识符
- Java 学习---- day1 ——(1)编程习惯
- [JAVA学习] Day1: 决定学习Java
- Java学习笔记day1(Java概述)
- CoreJava学习笔记深入浅出个人心得———Day1
- Java学习 ----day1——(4)数据类型及数据类型转换
- Java学习--day1
- 【JAVA Web基础学习】Day1
- Java突击学习 Day1
- JAVA学习Day1
- java学习记录【day1】
- Java学习笔记_day1
- kotlin学习Day1:JavaActivity和KotlinActivity对比分析
- java编程思想学习day1
- Java学习(回顾)笔记之day1