笔记(2):String字符串的使用

String字符串的使用

package com.tedu.String;
/**
 * 字符串是不可变对象,内容一旦创建不可修改
 * 若改变,一定是创建了(引用)新对象
 * 
 * @author Wildmess
 *
 */
public class StringDemo1 {
	
	public static void main(String[] args) {
		/*
		 * java中推荐我们使用""引起来字符串对象来直接赋值的方法
		 *也就是推荐字面量直接赋值给变量
		 *好处就是这种赋值会在字符串常量池中创建
		 *对象可能会被重用,大大节省内存
		 */
		String s1 = "abc";
		String s2 = "abc";
		//在这里s1、s2指向的是同一个对象
		System.out.println("s1=" + s1 + "\ns2=" + s2);
		System.out.println(s1 == s2);//true
		String s3 = s1 + "d";
		System.out.println("s2=" + s2 + "\ns3=" + s3);
		System.out.println(s2 == s3);//false
		
		//使用new关键字来创建对象
		//不推荐使用这种方法,因为会有大量的内存得到泄露
		String s4 = new String("abc");
		System.out.println("s1=" + s1 + "\ns4=" + s4);
		//这里比较的是s1、s4对象的地址
		System.out.println(s1 == s4);//false
		
		/*
		 * 比较字符串时,如果需要比较字符串中内容时
		 * 推荐使用equals方法进行比较
		 * 字符串的比较很少使用"=="
		 */
		System.out.println(s2.equals(s4));//此时比较的就是两者的内容,不再是地址
		
		System.out.println("-----------分割线---------");
		/* 特例:
		 * 编译器有个特性,凡是能在编译期确定的计算结果
		 * 一定会在编译期运行计算
		 * 将编译的结果直接保存编译在class文件中
		 * 不会每次运行时在计算,以提高运行效率
		 */
		String s5 ="abc" + "d";//s5="abcd"(编译时)
		//一般可能会有人认为这里创建了3个对象——"abc","d","s5"
		//但这里其实就创建了s5一个对象
		System.out.println("s5=" + s5);
		System.out.println(s5 == s3);//true
		
		String s = "abc";
		String s6 = s + "d";	//这里创建了3个对象
		System.out.println("s6=" + s6);
		System.out.println(s6 == s3);//false
		
		/*
		 * PS:
		 * 单引号和双引号意义是完全不同的
		 */
		
		String str1 = '1' + 23 + "abc";//等同于49+23+"abc"
		System.out.println(str1);
		
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值