第三周学习总结

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

前言

有时候事情往往并不能像你期望的轨道发展,因为其他的事情而导致了学习进度的放缓,由此可见规划时间以及高效利用时间的重要;除此之外,学习java不仅需要多敲代码,也需要对知识点进行总结,记笔记。我的习惯是边学边记,而不是学完一个阶段性内容后再总结,一是时间不够,而是这样做可能会遗漏某些知识点,会花费额外时间。

一、字符串

1.String

概述
java.lang.String 类代表字符串
**注意点:**字符串内容不会发生改变,它的对象在创立后不能被更改。
创建String的两种方式
1.直接赋值
2.new

public class StringDemo {
    public static void main(String[] args) {
        //1.使用直接赋值的方式获取一个字符串对象
        String s1 = "abc";
        System.out.println(s1);//abc

        //2.使用new的方式来获取一个字符串对象
        //空参构造:可以获取一个空白的字符串对象
        String s2 = new String();
        System.out.println("@" + s2 + "!");//""

        //3.传递一个字符串,根据传递的字符串内容再创建一个新的字符串对象
        String s3 = new String("abc");
        System.out.println(s3);

        //4.传递一个字符数组,根据字符数组的内容再创建一个新的字符串对象
        //需求:我要修改字符串的内容。  abc  Qbc
        //abc --> {'a','b','c'} --> {'Q','b','c'} --> "Qbc"
        char[] chs = {'a', 'b', 'c', 'd'};
        String s4 = new String(chs);
        System.out.println(s4);//abcd
         //5.传递一个字节数组,
        byte[] bytes = {97, 98, 99, 100};
        String s5 = new String(bytes);
        System.out.println(s5);
    }
}

**直接赋值优势:**节省空间,代码简单

2.字符串

字符串比较
boolean equals方法(要比较的字符串);完全一样
boolean equalsignoreCase(要比较的字符数串)。忽略大小写
例:boolean result= s1.equals(s2)

3.字符串方法

(1)String常见方法:

“==”的用法
基本数据类型:比的数据值;
引用数据类型:比的是地址值;

(2)Strting类

常见方法
1.public char charAt(int index):根据索引返回字符
2.public int length():返回此字符串的长度
3.数组的长度:数组名.length
4.字符串的长度:字符串对象.length()
截取
substring(int beginindex,endindex)
注意点:包头不包尾,包左不包右
有效值为返回值
替换
replade(旧值,新值)
StringBuilder类
Stringbuilder可以看作是一个容器,里面的内容可变
public StringBuilder append (任意类型) 添加数据,并返回对象本身
public StringBuilder reverse( Stringbuilder可以看作是一个容器,里面的内容可变
public StringBuilder append (任意类型) 添加数据,并返回对象本身
public StringBuilder reverse(反转容器中的内容)
public int length(返回长度) (字符出现的个数)
public String toString(通过toString就可以实现把StringBuilder转换为String)
注意:

  1. Stringbuilder打印出来的不是地址值,是属性值。
    2.再把StringBuilder变回字符串方法
    String str = sb.toString();
    System.out.println(str);//aaabbbcccddd
    **使用场景:**字符串的反转和字符串的拼接。

(3)StringJoinner类

StringJoiner和StringBuilder类似,都可看作是一个容器,创建之后其内部的内容是可以改变的。
能够提高字符串的操作效率,并且编写代码时会特别简洁,不过目前在市场上使用它的人比较少。
StringJoiner 的构造方法
方法名 public StringJoiner (间隔符号)
说明创建一个StringJoiner对象,指定拼接时的间隔符号
方法名 public StringJoiner (间隔符号,开始符号,结束符号)
说明:创建一个StringJoiner对象,指定拼接时的间隔符号、开始符号、结束符号
StringJoiner 的成员方法
方法名
public StringJoiner add (添加的内容)
说明
添加数据,并返回对象本身
方法名
public int length()
说明
返回长度(字符出现的个数)
方法名
public String toString()
说明
返回一个字符串(该字符串就是拼接之后的结果)

3.字符串底层原理小结

字符串存储的内存原理:
1 直接赋值字符串时,会复用字符串常量池中的内容;用new创建字符串时,不会复用,而是开辟新的内存空间。
2 ==号比较的内容:对于基本数据类型,==比较的是数据值;对于引用数据类型,==比较的是地址值。
3 字符串拼接的底层原理:无变量参与的字符串直接相加,编译后就是拼接结果,且会复用字符串常量池中的字符串;有变量参与时,会创建新字符串,比较浪费内存。
4 StringBuilder提高效率原理:所有要拼接的内容都放入StringBuilder中,不会创建大量无用空间,能节约内存。
5 StringBuilder源码分析:默认创建长度为 16 的字节数组;添加内容长度小于 16 时,直接存储;大于 16 时会扩容(原容量 * 2 + 2);若扩容后仍不够,以实际长度为准。

二、集合

1.集合与数组区别

长度
数组:固定长度;
集合:动态长度;
存储类型
数组:基本数据类型与引用数据类型
集合:不能直接存储引用数据类型。(需要包装类)

2.Arraylist

注意:打印对象不是地址值,而是集合中催出存储的内容。
成员方法
1.boolean add(E e):用于添加元素,返回值表示是否添加成功。
2.boolean remove(E e):删除指定元素,返回值表示是否删除成功。
3.E remove(int index):删除指定索引的元素,返回被删除元素。
4.E set(int index, E e):修改指定索引下的元素,返回原来的元素。
5.E get(int index):获取指定索引的元素。
int size():获取集合的长度,即集合中元素的个数。

3.基本数据类型对应的包装类

● yte 对应 Byte
● short 对应 Short
● char 对应 Character
● int 对应 Integer
● long 对应 Long
● float 对应 Float
● double 对应 Double
● boolean 对应 Boolean

三、对象

1.标准的 JavaBean 类

  1. 类名需要见名知意
  2. 成员变量使用 private 修饰
    3.提供至少两个构造方法
    ● 无参构造方法
    ● 带全部参数的构造方法
  3. 成员方法
    ● 提供每一个成员变量对应的 setXxx ()/getXxx ()
    ● 如果还有其他行为,也需要写上

2.面向对象

**面向:**找、拿
**对象:**能干活的东西
面向对象编程:拿东西过来做对应的事情。

3.设计对象并使用

(1)如何得到对象

public class 类名{
成员变量(代表属性,一般是名词)
成员方法(代表行为,一般是动词)
}
类名 对象名 = new类名();

(2)注意事项

1.描述一类事物的累叫javabean类,此类中不写main方法。以前编写main方法的类叫测试类,可以在测试类中创建Javabean类的对象并复制调用
2.一个Java文件中可以定义多个class类,但只能有一个是public修饰,且public修饰类名必须为代码文件名;
成员变量的完整定义格式是:修饰符 变量类型 变量名称=初始化值
变量默认规则
在这里插入图片描述

四、this关键字

**本质:**所在方法调用着的地址值区分成员变量和局部变量
**使用原因:**同名变量会默认采用就近原则

五、封装

告诉我们如何正确设计对象和属性和方法
封装:对象代表什么,就得封装对应数据,并提供数据的行为
封装的好处:极大降低学习成本,可以直接去找

1.private关键字

权限修饰符
可以修饰成员(变量和方法)
被修饰的成员之能在本类中才能访问
用法

public class GirlFriend {
    private int age;

    // set(赋值)
    public void setAge(int a) {
        if (a >= 18 && a <= 50) {
            age = a;
        } else {
            System.out.println("非法数据");
        }
    }
    // get(获取)
    public int getAge() {
        return age;
    }
}

2.小结

  1. private 关键字是一个权限修饰符
  2. 可以修饰成员(成员变量和成员方法)
  3. 被 private 修饰的成员只能在本类中才能访问
  4. 针对 private 修饰的成员变量,如果需要被其他类使用,提供相应的操作
  5. 提供 “setXxx (参数)” 方法,用于给成员变量赋值,方法用 public 修饰
  6. 提供 “getXxx ()” 方法,用于获取成员变量的值,方法用 public 修饰

六、多态

什么是多态?
同类的对象表现出的不同形态
多态的表现形式
父类类型 +对象名称=子类对象
多态的前提
有父类引用指向子类对象。
多态的好处
使用父类作为参数,可以接收所有子类对象。体现多态的扩展和便利性。
调用成员变量
编译看左边,运行也看左边;
调用成员方法
编译看左边,运行按右边;
多态的弊端
不能调用子类的特有方法;
instanceof
判断变量所记录的对象是不是本类型

七、继承

1.继承是面向对象的三大特征,可以让类跟类之间产生父子关系。可以把多个子类中重复的代码抽取到父类中,子类可以直接使用,减少代码冗余,提高代码复用性。
2.继承格式
在这里插入图片描述
3.当类与类之间存在相同内容,并且子类是父类的一种,就可以考虑继承,优化代码。

1.继承特点

只支持单继承,不支持多继承,但支持多层继承。
**单继承:**一个子类只能继承一个父类。
多层继承:子类A可以继承父类B,父类B可以继承父类C。
每个类都间接或直接继承Object。

(1)子类可以继承的内容

构造方法 非私有(不能) private(不能)
成员变量 非私有(能) private(能)
成员方法 非私有(能) private(不能)

(2)成员变量访问特点

**就近原则:**离谁进就用谁。
**super:**访问父类

(3)方法重写

当父类方法不能满足子类现在需求时,需要进行方法重新写

  1. 重写方法的名称、形参列表必须与父类中的一致。
  2. 子类重写父类方法时,访问权限子类必this须大于等于父类(暂时了解:空着不写 < protected < public)
  3. 子类重写父类方法时,返回值类型子类必须小于等于父类
  4. 建议:重写的方法尽量和父类保持一致。
  5. 只有被添加到虚方法表中的方法才能被重写

(4)构造方法的访问特点

● 子类不能继承父类的构造方法,但是可以通过super调用
● 子类构造方法的第一行,有一个默认的super();
● 默认先访问父类中无参的构造方法,再执行自己。
● 如果想要访问父类有参构造,必须手动书写。

2.this和super方法使用总结结

this 可理解为一个变量,它表示当前方法调用者的地址值。
super代表父类存储空间

本周小结

这周的知识点虽然自认为笔记记得不错,但因为没有及时复习而导致基本概念有些纰漏,总之,笔记后续一定要多看。
**下周期望:**对学过知识点进行复习,并编写经典的“学生管理系统”项目。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值