java --常用类(String)

#1.String
字符串采用unicode编码,一个字符占两个字节。

public class TestString {

	/**
	 * String:它表示不可变的字符序列,底层使用char[]存放元素
	 * String是finall;即不可重复对一个String变量赋值
	 */
	public static void main(String[] args) {
		String str1 = "panDa";
		String str2 = "panDa";
		String str3 = new String("panDa");
		String str4 = "panDa"+"laoLi";
		String str5 = "laoLi";
		String str6 = str1+str5;
		String str7 = "tiantian";
		str7 = str7 + "kaixin";
		String str8 = "panDalaoLi";
		/**
		 * str1的"panDa"存放在字符串常量池中,对应一个地址(假设0x1234),地址存放在栈中
		 * str2先去常量池找"panDa",有的话,直接使用地址(0x1234),没有的话,新建一个地址
		 * str3:new表示在堆中开辟一个新的区间,区间地址(假设0x1235),地址存放在栈中,
		 * 同时该区间对应一个常量值"panDa",常量值存放在常量池中,常量值对应的地址(0x1234)
		 * 因此,new String("panDa")表示新建了两个对象,对象1的地址0x1234,对象2的地址0x1235
		 * 所以查找str3对应的值的时候,1.先找区间地址(0x1235),再找值地址(0x1234)
		 * ==:比较地址值
		 * equals:比较内容值
		 */
		//true(0x1234 == 0x1234)
		System.out.println(str1 == str2);
		//false(0x1234 != 0x1235)
		System.out.println(str1 == str3);
		//true("panDa == panDa")
		System.out.println(str1.equals(str3));
		
		//str4表示的是"panDalaoLi"对应的地址值
		//str6表示的是str1的地址值与str5的地址值相加
		System.out.println(str4 == str6);
		//true(str4与str6对应的值是一样的)
		System.out.println(str4.equals(str6));
		//true(sr4与str8对应的常量池地址值是一样的)
		System.out.println(str4 == str8);
		
		//str7 = str7 + "kaixin";
		/**
		 * str7="tiantian",同str1
		 * str7 = str7 + "kaixin",在常量池中重新开辟一个区间,即重新有个地址值
		 */
		Car car1 = new Car("audi");
		Car car2 = new Car("audi");
		System.out.println(car1);
		System.out.println(car2);
		//false(很明显这是new了两个地址)
		System.out.println(car1 == car2);
		//false(car1与car对应的是两个地址值,因为没有重写hashcode与equals方法)
		System.out.println(car1.equals(car2));
		//true(两个对象属性的地址是一样的)
		System.out.println(car1.brand == car2.brand);
		//true(两个对象的属性值是一样的)
		System.out.println(car1.brand.equals(car2.brand));
	}
}

class Car{
	String brand;

	public String getBrand() {
		return brand;
	}

	public void setBrand(String brand) {
		this.brand = brand;
	}
	//构造函数
	public Car(String brand) {
		super();
		this.brand = brand;
	}
}

#2.String常用方法

	public static void main(String[] args) {
		String str1 = "abcdefgabd2345";
		String str2 = "abcd";
		//返回字符串的长度
		System.out.println(str1.length());
		//返回指定位置的字符
		System.out.println(str1.charAt(3));
		//比较两个字符串的值是否相等
		System.out.println(str1.equals(str2));
		//返回形参在字符串中首次出现的位置
		System.out.println(str1.indexOf("de"));
		//返回形参在字符串中最后一次出现的位置
		System.out.println(str1.lastIndexOf("ab"));
		//截取字符串,从第3个位置开始截取
		System.out.println(str1.substring(3));
		//截取字符串片段,从2开始(包含)到5结束(不包含)
		System.out.println(str1.substring(2, 5));
		//字符/字符串替换
		System.out.println(str1.replace("ga", "ll"));
		//字符串替换,基于正则表达式
		System.out.println(str1.replaceAll("\\d", "z"));
		//去除字符串首尾空格
		System.out.println(str1.trim());
		//字符串拼接
		System.out.println(str1.concat("zzz"));
		//字符串分隔符,返回字符串数组
		System.out.println(str1.split("a"));
	}

转载于:https://my.oschina.net/u/2312022/blog/754345

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值