——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
Object类
(1)Object是类层次结构的根类,所有的类都直接或者间接的继承自Object类。
(2)Object类的的构造方法只有一个无参构造
(3)要掌握的方法:
A:toString()
返回对象的字符串表示,默认是由类的全路径+’@'+哈希值的十六进制表示。建议子类通过自动生成重写该方法。
B:equals()
比较两个对象是否相同。默认情况下,比较的是地址值是否相同。所以,建议子类通过自动生成重写该方法。(String的equals方法比较的是值)
ps:obj instanceof Student 表示判断obj对象是否是Student类的对象
(4)要了解的方法:
A:hashCode() 返回对象的哈希值。不是实际地址值,可以理解为地址值。
B:getClass() 返回对象的字节码文件对象
Student s = new Student();
String str=s.getClass().getName();//输出为完整路径名:包名+类名
C:finalize() 用于垃圾回收,在不确定的时间
D:clone() 可以实现对象的克隆,包括成员变量的数据复制,但是它是独立的一个对象,和两个引用指向同一个对象是有区别的。该方法返回的是obj对象。被克隆对象的类需实现Cloneable接口才能正常克隆。该接口是标记接口,无方法。
(5)需要注意的问题;
A:直接输出一个对象名称,其实默认调用了该对象的toString()方法。
B:equals()只能比较引用类型。默认情况下,比较的是地址值是否相同。一般根据自己的需要重写该方法。String类的equals方法是比较内容
Scanner的使用
(1)在JDK5以后出现的用于键盘录入数据的类。
(2)构造方法:
A:System.in其实是标准的输入流,对应于键盘录入
B:构造方法
InputStream is = System.in;
Scanner(InputStream is)
(3)基本方法格式:
A:hasNextXxx() 判断是否是某种类型的 返回值是boolean
B:nextXxx() 返回某种类型的元素
next()和nextLine()区别:前一个是以回车或空格为分隔符,一次取一个单词,后一个是以回车为分隔符,一次取一行。
(4)需要注意的小问题
A:同一个Scanner对象,先获取数值,再获取字符串会出现一个小问题。
B:解决方案:
a:重新定义一个Scanner对象
b:把所有的数据都用字符串获取,然后再进行相应的转换
c:用空格而不是回车隔开
String类的概述和使用
(1)构造方法:
A:public String()
B:public String(byte[] bytes) //吧字节数组转成字符串
C:public String(byte[] bytes,int offset,int length) //吧字节数组的从offset索引开始的length长度的字节转成字符串
D:public String(char[] value)
E:public String(char[] value,int offset,int count)
F:public String(String original) //吧字符串常量值转成字符串
下面的这一个虽然不是构造方法,但是结果也是一个字符串对象
G:String s = "hello";
(2)字符串的特点
A:字符串一旦被赋值,就不能改变。
注意:这里指的是字符串的内容不能改变,而不是引用不能改变。
字符串缓冲区的字符串可以改变
B:字面值作为字符串对象和通过构造方法创建对象的不同
String s = new String("hello");和String s = “hello"的区别?
后者不在堆内存中开辟空间
(3)看程序写结果
String s1 = "hello";
String s2 = "world";
String s3 = "helloworld";
System.out.println(s3 == s1 + s2);// false s1s2俩变量相加,会先开空间再拼接,所以地址值肯定不一样
System.out.println(s3.equals((s1 + s2)));// true
System.out.println(s3 == "hello" + "world");// true 俩常量相加是直接拼接得helloworld发现常量池里有一样的就直接用了,不创建
System.out.println(s3.equals("hello" + "world"));// true
(4)字符串的功能
A:判断功能
boolean equals(Object obj) //比较内容
boolean equalsIgnoreCase(String str) //比较内容,忽略大小写
boolean contains(String str) //判断大字符串中是否包含小字符串
boolean startsWith(String str)//判断字符串是否以某个指定的字符串开头
boolean endsWith(String str)
boolean isEmpty() //判断字符串是否为空
B:获取功能
int length()
char charAt(int index) //获取指定索引位置的字符
int indexOf(int ch) //返回指定字符在此字符串中第一次出现的索引 输入字符、数字都行
int indexOf(String str) //返回指定字符串在此字符串中第一次出现的索引
int indexOf(int ch,int fromIndex)//返回指定字符在此字符串中从指定位置开始第一次出现的索引,没有则返回-1
int indexOf(String str,int fromIndex)
String substring(int start) //从指定位置start开始截取字符串
String substring(int start,int end) //从start位置开始截取字符串 包括start不包括end
C:转换功能
byte[] getBytes() //把字符串转为字节数组
char[] toCharArray() //把字符串转为字符数组
static String valueOf(char[] chs) //吧字符数组转为字符串
static String valueOf(int……) 吧任意类型数据转为字符串
String toLowerCase() //吧字符串转为小写 返回的是新的String对象。传入的字符串不变
String toUpperCase()
String concat(String str) //吧字符串拼接
D:其他功能
a:替换功能
String replace(char old,char new)
String replace(String old,String new)
b:去空格功能
String trim() //只去掉前后两端的空格,中间的不管
c:按字典比较功能
int compareTo(String str) //从第一位开始按字典顺序比较俩字符串 注意返回值是int。返回的是该位字符 - 被比较的字符。第一位相同则比较第二位,第一位就不同则直接返回
int compareToIgnoreCase(String str)
(5)String类的练习
1.把首字母转大写,其他转小写
public static void formatNum(String str){
//substring包左不包右,所以这里截取的第一个字母
String first = str.substring(0,1).toUpperCase();
String rest = str.substring(1,str.length()).toLowerCase();
System.out.println(first+rest);
}
2.统计数字,大写,小写出现的次数
public static void tongjiNum (String str){
int num = 0;//数字出现的次数
int upcase = 0;//大写出现的次数
int downcase = 0;//小写出现的次数
//挨个遍历
for (int x = 0;x<str.length();x++){
if (str.charAt(x) >='A' && str.charAt(x)<= 'Z'){
//如果是大写字母
upcase++;
}else if (str.charAt(x)>='a' && str.charAt(x)<='z'){
//如果是小写字母
downcase++;
}else if (str.charAt(x)>='0' && str.charAt(x)<='9'){
//如果是数字
num++;
}
}
System.out.println("数字"+num+"个");
System.out.println("大写"+upcase+"个");
System.out.println("小写"+downcase+"个");
}
3.字符串反转
public static void reverseNum(String str){
String newStr ="";//创建一个空字符串
//倒着遍历
for (int x = str.length()-1;x>=0;x--){
//拼接
newStr += str.charAt(x);
}
System.out.println(newStr);
}
4.查找指定字符串出现次数
方法1
public static void findNum (String str,String find){
int count =0;
int index;
index = str.indexOf(find); //第一次查找并把返回的索引值赋值给index
while (index != -1){ // 判断index是否 不等于-1 是则执行循环 否则不执行
count++; //执行循环说明index不为-1,所以出现一次,计数
index += find.length(); //从 index+find.length()位置开始下一次查找
index = str.indexOf(find,index);
}
System.out.println("共出现"+count+"次");
}
方法2
public static void findNum2 (String str,String find){
int count =0;
int index;
while ((index=str.indexOf(find)) != -1){
count++;
str = str.substring(index+find.length()); //从找到的位置 截取字符串并重新赋值
}
System.out.println("共出现"+count+"次");
}