Java学习第五周
1.内部类:把类定义在其他类的内部,这个类就被称为内部类
内部类访问特点
①:内部类可以直接访问外部类的成员,包括私有。
②:外部类要访问内部类的成员,必须创建对象。
按照内部类位置分类:
成员位置:在成员位置定义的类,被称为成员内部类。
局部位置:在局部位置定义的类,被称为局部内部类。
访问内部类的成员格式: 外部类名.内部类名 对象名 = 外部类对象.内部类对象;
成员内部类被静态修饰后的访问格式:外部类名.内部类名 对象名 = new 外部类名.内部类名();
2.匿名内部类: 就是局部内部类的简化写法。
前提: 存在一个类或者接口;这里的类可以是具体类也可以是抽象类。
格式:new 类名或者接口名(){
重写方法;
} ;
本质是一个继承了该类或者实现了该接口的子类匿名对象。
3.object类中方法
public boolean equals(Object obj)比较俩个对象是否相同
public final Class getClass()获取类的信息
public int hashCode()返回该对象的哈希码值,逻辑地址值
public String toString()将值返回对应的字符串
特别注意:equals和==的区别
==是一个比较运算符,能比较基本数据类型和引用数据类型(==号比较两个对象时比较的是两个对象的地址值)
equals()是一个方法,只能比较引用数据类型(比较地址值)
4.String类中的方法
public String()
无参构造方法
public String(byte[] bytes)
把字节数组转换成一个字符串
public String(byte[] bytes,int index,int length)
把字节数组从index下标开始到length个元素转换成字符串
public String(char[] value)
把一个字符数组转换成一个字符串
public String(char[] value,int index,int count)
把一个字符数组从index下标处开始的count个字符转换成字符串
public String(String original)
把一个字符串转换成一个字符串
public boolean equals(Object obj)
比较字符串是否相等,比较的是内容,区分大小写
public boolean equalsIgnoreCase(String str)
比较字符串是否相等,比较的是内容,不去分大小写
public boolean contains(String str)
判断一个字符串是否包含Str字符串
public boolean startsWith(String str)
判断一个字符串是否一Str这个字符串开始
public boolean endsWith(String str)
判断一个字符串是否以Str这个字符串结尾
public boolean isEmpty()
判断字符串是否空串
public int length()
获取字符串长度
public char charAt(int index)
获取对应索引的字符
public int indexOf(int ch)
获取指定字符第一次出现的索引
public int indexOf(String str)
获取指定字符串第一次出现的索引
public int indexOf(int ch,int fromIndex)
返回指定字符在此字符串中从指定位置后第一次出现处的索引
public int indexOf(String str,int fromIndex)
返回指定字符串在此字符串中从指定位置后第一次出现处的索引
public String substring(int start)
从指定位置截取字符到最后
public String substring(int start,int end)
从指定位置到指定位置截取字符,含头不含尾
public byte[] getBytes()
把字符串转换为字节数组
public char[] toCharArray()
把字符串转换为字符数组
public static String valueOf(char[] chs)
把字符数组转成字符串
public static String valueOf(int i)
把int类型的数据转成字符串
public String toLowerCase()
将字符串转为小写
public String toUpperCase()
将字符串转为大写
public String concat(String str)
拼接字符串
public String replace(char old,char new)
替换指定的字符变为新指定字符
public String replace(String old,String new)
替换指定的字符串变为新指定字符串
public String trim()
去掉左右俩端空格
public int compareTo(String str)
会对照ASCII 码表 从第一个字母进行减法运算 返回的就是这个减法的结果,如果前面几个字母一样会 根据两个字符串的长度进行减法运算返回的就是这个减法的结果,如果字符串一摸一样 返回的就是0
public int compareToIgnoreCase(String str)
无视大小写,其他和上面的一样
5.Scanner类的方法
hasNextXxx() 判断下一个是否是某种类型的元素,其中Xxx可以是Int,Double等。
如果需要判断是否包含下一个字符串,则可以省略Xxx
nextXxx() 获取下一个输入项。Xxx的含义和上个方法中的Xxx相同
public int nextInt():获取一个int类型的值
public String nextLine():获取一个String类型的值
public String next():获取一个String类型的值
需要录入键盘输入,格式为Scanner sc=new Scanner(System.in);
6.其他
while和if的区别
1、用法
while和if本身就用法不同,一个是循环语句,一个是判断语句。
2、运行模式
if 只做判断,判断一次之后,便不会再回来了。
while 的话,循环,直到结果为false,才跳出来。
3、使用效果
链表的结构,要一直读下去,直到读完整个链表结构,所以需要while。
if的话只读一次,便跳出了 。
4.if 和 while当条件不成立时,都跳过代码块执行后面的代码。
不同的是当条件成立时,if执行完代码块后继续执行后面的代码,while执行完代码块后再判断while的条件,成立就再执行代码块里的代码,直到不成立,才执行代码块后面的代码。while的代码块里如果遇到break;指令,则跳出while代码块直接执行后面的代码