Java学习day1

今天,我正式开始了Java的学习生活,今天是第一天给大家分享一下今天学习的内容.

面向对象(基础回顾,继承)

       基础内容回顾

            Java中的数据类型

                 基本类型:48

                       整数: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 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.抽象类

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值