一、Object类
Object:是类层次结构的根类.每个类都使用 Object 作为超类(父类)
1、public int hashCode()返回该对象的哈希码值 把它理解地址值(不是实际意义的地址值)
//118352462 纯数字;
2、public final Class getClass()返回此 Object 的运行时类
// class org.wesots_01.Student 返回class类型;
3、public String getName()以 String 的形式返回此
// org.wesots_01.Student :全类名 以字符串显示当前的类;
Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。返回值是Class
4、public String toString(); 返回该对象的字符串表示
Integer:是int类型的包装类类型
它里面提供了一个方法
public static String toHexString(int i):以十六进制表示对字符串形式
直接输出对象名称:实际执行了Object中的toString(),输出的全类名@十六进制数据
我现在输出对象名称,不想让toString()直接输出的是一个地址值(对象的地址值)
就需要重写Object中的toSring(),一般情况:自动生成即可 建议所有子类都重写此方法。
5、public boolean equals(Object obj)指示其他某个对象是否与此对象“相等”。
==:比较的值相等(地址值)
equals:本身属于Object类中的方法,默认比较的是地址值是否相同
按照正常情况:equals方法底层实际执行的两个对象在==,比较是地址值;
在自定义的类中,重写Object中的equals()方法,比较是两个对象的成员变量的值是否相同.自动生成即可!
6、protected Object clone()创建并返回此对象的一个副本
Object类的clone方法执行特定的复制操作。首先,如果此对象的类不能实现接口Cloneable,则会抛出 CloneNotSupportedException。
注意,所有的数组都被视为实现接口 Cloneable
1、键盘录入的步骤
1)需要创建键盘录入对象:canner sc =new Scanner(System.in);
2)导入包: import java.util.Scanenr; ctrl+shift+o
3)接收数据: XXX 变量名= sc.nextXXX();
2、构造方法:
public Scanner(InputStream source): 以输入流的形式录入数据的
InputStream:字节输入流:
InputStream in = System.in ; //底层执行返回的是一个字节输入流(标准输入流)
3、Scanner类的一些常见的方法:
XXX 变量名 = 键盘录入对象.nextXXX();
4、Scanner类中它提供一个判断功能:
5、boolean hasNextXXX():当前扫描器判断是否有下一个可以录入的XXX类型数据 nextXXX();
6、java.util.InputMismatchException:录入的数据和接收的数据类型不匹配异常
A、键盘录入两个int类型的数据,分别输出,没有问题
B、键盘录入两个String类型的数据,分别输出:没有问题
C、先录入一个String类型的数据,在录入int类型的数据,没有问题
D、先录入一个int类型的数据,在录入String类型的数据,有问题:第二个数据是字符串类型,又由于录入下一个数据要"空格"本身是一个字符串
如何解决:重写创建键盘录入对象
int a = sc.nextInt() ;
String b = sc.nextLine() ;
//需要创建键盘录入对象
Scanner sc2 = new Scanner(System.in) ;
String b = sc2.nextLine()
三、String类
String是一种特殊的引用类型: 默认值:null
1、构造方法:
String():无参构造
String(byte[] bytes) :将字节数转换成字符串
public String(byte[] bytes, int index,int length):将字节数组的一部分转换成字符串
public String(char[] value):将字符数组转化成字符串 toCharArray():将字符串转换成字符
public String(char[] value, int index, int count):将字符数组的一部分转换成字符串
public String(String original):将一个字符串常量构造成一个字符串对象
2、常用的方法:
public int length()返回此字符串的长度
面试题:
数组中有没有length(),字符串中有没有length(),集合中有没有length()?
数组中没有length()方法,只有length属性
字符串中有length()
集合中没有length(),获取集合的元素数:size( )
boolean equals(Object obj):将此字符串与指定的对象比较
boolean equalsIgnoreCase(String str)将此 String 与另一个 String 比较,不考虑大小写
boolean startsWith(String str):以当前str字符串开头(重点)
boolean endsWith(String str):以当前str字符串结尾(重点)
boolean isEmpty():判断字符串是否为空
public String concat(String str):字符串的特有功能:拼接功能和+拼接符是一个意思
public int length():获取字符串的长度
public char charAt(int index)返回指定索引处的 字符
public int indexOf(int ch)返回指定字符在此字符串中第一次出现处的索引
public int indexOf(int ch,int fromIndex)返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。
public int indexOf(String str)返回指定子字符串在此字符串中第一次出现处的索引
public int indexOf(String str,int fromIndex)回在此字符串中第一次出现指定字符串处的索引,从指定的索引开始搜索。
public String substring(int beginIndex):从指定位置开始截取,默认截取到末尾,返回新的字符串
public String substring(int beginIndex, int endIndex):从指定位置开始到指定位置末尾结束,包前不包含
public byte[] getBytes() :将字符串转换为字节数组
public char[] toCharArray() :将字符串转换成字符数组(重点)
public static String valueOf(int i):将int类型的数据转换成字符串(重点) 这个方法可以将任何类型的数据转化成String类型
public String toUpperCase():字符串中所有的字符变成大写
public String replace(char oldChar,char newChar):将大字符串中的某个字符替换掉成新的字符
public String replace(String oldStr,String newStr):将大串中的某个子字符串替换掉
public String trim():去除字符串两端空格
public int compareTo(String anotherString)按字典顺序比较两个字符串
1: 字符串反转
举例:键盘录入”abc”
输出结果:”cba”
package day09;
public class fanzhuan {
public static void main(String[] args) {
String a="abc";
String b="";
for (int i = 0; i < a.length(); i++) {
b=b+a.charAt(2-i);//逆序反转
}
System.out.println(b);
}
}
举例:
在字符串"woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun"
结果:
java出现了5次
package day09;
public class lookfor {
public static void main(String[] args) {
// 创建大串
String Str1 = "woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun";
// 定义小串
String Str2 = "java";
// 写功能实现
int count = getCount(Str1, Str2);
System.out.println(Str2 + "出现了" + count + "次");
}
/*
* 两个明确 返回值类型:int 参数类型:两个字符串
*/
public static int getCount(String Str1, String Str2) {
int count = 0;
// 先在大串中查找一次小串第一次出现的位置
int index = Str1.indexOf(Str2);// 4
// 如果索引值是-1,就说明存在,统计变量++
while (index != -1) {// 4 8 10 13 12
count++;// 1 2 3 4 5
// 把刚才的索引+小串的长度作为起始位置截取原始大串,得到一个新的字符串,并把该字符串重新赋值给大串
int startIndext = index + Str2.length();
Str1 = Str2.substring(startIndext);
index = Str1.indexOf(Str2);
}
return count;
}
}