开发喵星球

姬丽丽 80_第六周周报-姬丽丽

周报

日期:2023/08/21 ~ 2023/08/27

一、本周回顾

本周重点学习了字符序列,学习了字符串常用的API、正则表达式、字符串变量、日期时间的常用类,抽象类和抽象方法开了个头。

1.字符串常用的API

charAt(int index) char 返回指定索引处的字符
codePointAt(int index) int 返回指定索引处的字符(Unicode代码点)
compareTo(String anotherString) int 按字典顺序比较两个字符串
compareToIgnoreCase( String str) int 按字典顺序比较两个字符串,忽略大小写
concat(String str) String 将指定的字符串连接到该字符串的末尾
contains(CharSequenc e s) boolean 当且仅当此字符串包含指定的s值序列时才返回true
endsWith(String suffix) boolean 测试此字符串是否以指定的后缀结尾
startsWith(String prefix) boolean 测试此字符串是否以指定的前缀开头
equals(Object anObject) boolean 比较字符串
equalsIgnoreCase(Str ing anotherString) boolean 比较字符串,忽略大小写
getBytes() byte[] 使用平台的默认字符集将此 String编码为字节序列,将结果存储到新的字节数组中
getBytes(Charset charset) byte[] 使用给定的charset将该String编码为字节序列,将结果存储到新的字节数组中
hashCode() int 返回此字符串的哈希码
indexOf(String str) int 返回指定字符第一次出现的字符串内的索引
indexOf(String str,int fromIndex) int 返回指定子串的第一次出现的字符串中的索引,从指定的索引开始
isEmpty() boolean 判断字符串是否是空串
lastIndexOf(String str) int 返回指定子字符串最后一次出现的字符串中的索引
lastIndexOf(String str, int fromIndex) int 返回指定子字符串的最后一次出现的字符串中的索引,从指定索引开始向后搜索
length() int 返回此字符串的长度
replace(char oldChar, char newChar) String 返回从替换所有出现的导致一个字符串oldChar在此字符串 newChar
split(String regex) String[] 将此字符串分割为给定的 regular expression的匹配.使用特殊字符时需要转义
substring(int beginIndex) String 从指定索引开始(包括)截取字符串并返回
substring(int beginIndex, int endIndex) String 从指定索引开始(包括)到指定索引结束(不包括)
toLowerCase() String 转换小写
toUpperCase() String 转换大写
trim() String 去掉首尾空格
toString() String 返回字符串

2.正则表达式

一种字符串处理的工具,用于查找、替换、匹配和提取文本中的模式。

正则表达式有一些特殊字符和普通字符组成,例如:\d{3}-\d{4}可以匹配“123-4567”的字符串,\d表示数字字符,{3}表示连续匹配3次,-表示匹配一个横线。

3.字符串变量

(1)StringBuffer:
public final class StringBuffer
extends AbstractStringBuilder
implements java.io.Serializable, CharSequence
StringBuffer() 构造一个没有字符的字符串缓冲区,初始容量为16个字符
StringBuffer(int capacity) 构造一个没有字符的字符串缓冲区和指定的初始容量
StringBuffer(String str) 构造一个初始化为指定字符串内容的字符串缓冲区
StringBuffer(CharSequence seq) 构造一个包含与指定的相同字符的字符串缓冲区CharSequence
(2)StringBuilder
public final class StringBuilder
extends AbstractStringBuilder
implements java.io.Serializable, CharSequence

二、感受

感觉比上周轻松了一丢丢,只是一丢丢丢丢……这周的内容更让我觉得一定要把基础学好,看到身边的同学编程能力都特别强,自己看到一些没有见过的题型还是没有思路,不过感觉自己比学校强了很多,起码现在能写出来一个完整的程序了,大写三年自己完整的做一个题的次数几乎没有,只要比以前的自己进步了就好。

跟身边的同学关系也很好,整体班级的气氛感觉很好,马老师上课也很幽默哈哈哈哈哈,没有什么代沟,每天的学习变得很有意思,就是一天到晚瞌睡的不行……

这周的考试没有上次考的好,唉,选择题错了十道,好几道跟实例化过程有关的都错了,前一天晚上跟三营的同学讨论绕的有点晕,简单题有点缺陷,编程第二题因为没看时间写的很乱。

三、问题

1.switch语句表达式在JDK7.0后支持的数据结构有(String、char、byte、short、int、枚举)。

enum是枚举的意思!

public class Demo{
    private static int a;
    public static void main(String[] args){
        modify(a);
        System.out.println(a);
    }
    public static void modify(int a){
        a++;
    }
}

输出的a是静态变量的a,默认初始值为0。

3.在类方法中可用this来调用本类的类方法:错误!

在Java中,类方法是通过类名直接调用的,而不是通过对象引用调用的。this和super都是对象。

public class TestDog{
    public static void main(String[] args){
        Animal a=new Animal();
        Animal b=new Dog();
        a.move();
        b.move();
        b.mark();
    }
}
class Animal{
    public void move(){
        System.out.println("动物可以移动");
    }
}
class Dog extends Animal(){
    public void move(){
        System.out,println("狗可以跑和走");
    }
    public void bark(){
        System.out.println("狗可以吠叫");
    }
}

bark()是子类特有的,父类只能调用父类和子类共有的,不能调用子类扩展的。

public static void main(String[] agrs){
    String text="""
        hello world
        """;
        String str="hello world";
    System.out.println(text.equals.(str));
}

输出false;"""没有写在heillo world后面说明hello world后面有一个换行符,所以text的长度比str的长度长。

public class Test{
    public int x;
    public static void main(String[] args){
        System.out.println("Value is "+x);
    }
}

非静态变量不能被静态方法引用。

class Parent{
    Parent(){
        System.out.println("Parent constructor");
    }
}
class Child extends Parent{
    Child(){
        System.out.println("Child constructor");
    }
}

new Child();创建对象时自动调用Child()的构造方法,调用子类的构造方法要先调用父类的构造方法,所以先输出Parent constructor,再输出Child constructor。

public static void main(String[] args){
    Object obj=new int[]{1,2,3};
    int[] someArray=(int)obj;
    for(int i:someArray){
        System.out.print(i+" ");
    }
}

输出结果为:1 2 3。Object obj=new int[]{1,2,3};没有错误,Object后面不需要加[]。

将一个整型数组赋值给了一个Object类型的变量obj。在这种情况下,Object是数组元素的最终父类,因此可以将一个数组对象赋值给Object类型的变量。

9.请简述this和super的区别。

①this表示当前对象,super指代父类对象。

②this可以解决局部变量遮蔽成员变量的问题,super可以解决隐藏问题。

③this调用本类的所有属性和方法,super调用父类的属性和变量。

④this可以在任何类中使用,super只能出现在子类中。

⑤都只能在实例方法、构造方法或实例初始化器中使用。

⑥都可以表示构造方法的调用,并且只能在构造方法第一行,不能同时出现。如果子类构造中调用父类无参构造方法时,此时 super() 可以省略。

10.请简述重载和重写的区别。

在同一类中,存在方法名相同,参数列表不同(个数、类型或顺序不同)的方法互为重载。

在继承关系中,子类声明一个继承自父类的方法名相同、参数列表相同,返回值类型一致,访问修饰符相同或变大,抛出异常相同或缩小的方法称为重写。

重载是编译时多态,重写是运行时多态。

11.请简述类中可以声明哪些内容,哪些可以被继承,哪些不能被继承。

类中可以声明静态初始化器 、实例初始化器 、构造方法、成员变量 、成员方法 、成员类、成员接口

同包下,可以被继承的有非 private 的成员(变量、方法、成员类、成员接口等),不同包,可以被继承的有public 及 protected 修饰的成员(变量、方法、成员类、成员接口等)。

一定不能被继承的有静态初始化器、实例初始化器、构造方法、私有属性、私有方法、私有成员类、私有成员接口等。

   
分类:喵星人成长 作者:开发喵 发表于:2023-08-31 22:08:20 阅读量:116
<<   >>


powered by kaifamiao