String类
1、实例化方式:
a.直接赋值:String str = "Hello Dear";
b.new方法:String str = new String("Hello Dear");
2、字符串相等比较:
"==":进行的是数值比较,比较的是两个字符串对象的内存地址;
"equals()":可以进行字符串内容的比较,一般将要比较的内容放在前面。
3、字符串常量是String的匿名对象。
4、String类两种实例化的区别
a.直接赋值:
String str1 = "Hello Dear";
String str2 = "Hello Dear";
String str3 = "Hello Dear";
由于String类的设计采用共享设计模式,因此直接赋值方法节省了堆内存空间,减少了垃圾空间。
b.采用构造方法:
String str1 = new String("Hello Dear");
String str2 = new String("Hello Dear");
String str3 = new String("Hello Dear");
每new一次就会开辟一个新空间,因此采用构造方法会产生垃圾空间。
对象如此操作:public String intern();
String str1 = new String("Hello Dear").intern() ;
String str2 = "Hello Dear" ;
System.out.println(str1 == str2); // true
5、字符串常量不可变更
eg.
String str = "hello";
str = str + " world";
str += "!!!" ;
System.out.println(str); // hello world!!!
String类使用原则:
a. 字符串使用就采用直接赋值。
b. 字符串比较就使用equals()实现。
c. 字符串别改变太多。
6、字符与字符串
取得指定索引位置的字符:charAt(x) 如果x超过了字符串长度,
会抛出StringIndexOutOfBoundsException异常
字符串转换为字符数组:toCharArray()
字符数组转为字符串:String(array)
public class Test {
public static void main(String[] args) {
String str = "hellodear";
System.out.println(str.charAt(8));//取得指定索引位置的字符:charAt(x)
char[] array = str.toCharArray(); //字符串转换为字符数组:toCharArray()
for(int i = 0;i < array.length;i++) {
array[i]-= 32; //小写转大写,而后输出
System.out.print(array[i]+"、");
}
System.out.print("\n");
System.out.println(new String(array));//字符数组转为字符输出
}
}
7、字符串的一些操作
字符串比较:
equals():区分大小写的比较;
equalsIgnoreCase()不区分大小写的比较;
compareTo():比较两个字符串大小若相等:返回0 ;小于:返回内容小于0;大于:返回内容大于0。
字符串查找:
contains():判断字符串是否存在。
字符串替换:
replaceAll():替换所有指定内容;
replaceFirst():替换指定内容的第一个。
字符串拆分:
split():将字符串按指定内容全部拆分;
length():字符串长度;
toUpperCase():字符串转大写;
toLowerCase():字符串转小写;
8、StringBuffer类
String的内容不可修改,StringBuffer和StringBuilder的内容可以修改;
StringBuffer采用同步处理,属于线程安全操作,StringBuilder采用异步处理,属于线程不安全操作。
Object类
1、Object类是参数的最高同一类型,所有类的对象都可以用Object接收;
public Object():无参构造为子类服务;
**public String toString():取得对象信息;
pubic boolean.equals(Object obj):对象比较。
2、接收引用数据类型
Object可以接收任意的对象,也可以接收所有数据类型,包括:类、数组、接口 。
//package 三大类;
//object接收对象及equals方法比较;
class person{
private String name;
private int age;
public person(String name,int age) {
this.age = age;
this.name = name;
}
// public String toString() {
// return "姓名是:"+this.name+",年龄为:"+this.age;
// }
public boolean equals (Object obj) {
if (obj == null) {
return false;
}if(this == obj) {
return true;
}if(!(obj instanceof person)) {
return false;
}
person per = (person) obj;
return this.name.equals(per.name)&&this.age == per.age;
}
}
class students{};
public class TestB{
public static void main(String[] args) {
person per1 = new person("找那个", 18);
person per2 = new person("liuliu", 3);
System.out.println(per1.equals(per2));
}
// public static void fun(Object obj) {
// System.out.println(obj.toString());
// }
}
//接收引用数据类型
public class TestB{
public static void main(String[] args) {
Object object = new int[] {1,22,45,677,8,8,99};
int[] data = (int []) object;
for(int i:data) {
System.out.print(i+"、");
}
}
}
//Object 接收接口类对象;
interface IMessage{
public void getMessage();
}
class MessageImpl implements IMessage{
public String toString() {
return "liu";
}
public void getMessage() {
System.out.println("刘留旒");
}
}
public class TestB{
public static void main(String[] args) {
IMessage message = new MessageImpl(); // 子接口向父接口转型
Object object = message; //接口向Obejct转型
System.out.println(object);
IMessage temp = (IMessage) object;//向下转型
temp.getMessage();
}
}
包装类
1、基本数据类型无法通过Object接收,object类只能接收引用数据类型;
包装类可以将基本数据类型包装在其中,让Object类接收。
2、包装类:
对象型包装类(object类的直接子类)
Boolean(bool的包装类) Character(char的包装类)
数值型包装类(Number类的包装子类)
Integer(int) Byte(byte) Double(double) Short(short) Long(long) Float(float)
3、Jdk1.5以后提供自动拆装箱操作
所有相同类型的包装类进行对象值比较一律使用equals方法。
对于Intergeter = ?(自动装箱) -128——127 之间的赋值,Intergeter对象会在Intergeter常量池中产生,
会复用已有对象,这个区间内的值比较可以直接引用“==”比较,会复用已有对象。此区间以外的所有数据,都会
在堆上产生,并不会复用已有对象,因此推荐使用equals方法进行判断。
package 三大类;
//包装类接收基本数据类型
class IntDemo{
private int num;
public IntDemo(int num) {
this.num = num;
}
public int intValue() {
return this.num;
}
}
public class TestA {
public static void main(String[] args) {
Object object = new IntDemo(66);
IntDemo temp = (IntDemo) object;
System.out.println(temp.intValue());
}
}
public class TestA {
@SuppressWarnings("deprecation")
public static void main(String[] args) {
@SuppressWarnings("deprecation")
Integer integer1 = new Integer(10);
Integer integer2 = new Integer(10);
String string = "1112345";
int num = Integer.parseInt(string);
System.out.println(string);
String string1 = "111245678";
Double num1 = Double.parseDouble(string1);
System.out.println(string1);
String string2 = "1112abcd";
Double num2 = Double.parseDouble(string2);
System.out.println(string2);
System.out.println(integer1 == integer2);
System.out.println(integer1 == new Integer(10));
System.out.println(integer1.equals(integer2));
}
}