java包装类和String、StringBUffer、StringBuilder

包装类

基本数据类型不具有方法属性,而引用数据类型可以有属性和方法 使用更加灵活
Byte Short Integer Long Float Double Character Boolean

Number类

Byte Short Integer Long Float Double 是Number的子类 可以通过xxValue()将某一类型转换成其他类型

Integer a = 100;
Byte b = a.byteValue();
Short c = a.shortValue();
Long d = a.longValue();
Float e = a.floatValue();
Double f = a.doubleValue();
Integer g = a.intValue();

//将字符串转换成int或者是double
String s = "123";
//方式1:
int i = Integer.parseInt(s);
//方式2:
int i2 = Integer.valueOf(s);

缓冲区

public class Demo02 {
	public static void main(String[] args) {
        /**
		 * 面试题:整数型包装类缓冲区
		 * 整数型的包装类定义缓冲区(-128~127),如果定义的数在这个范围你之内,那么直接从缓存数组中获取,
		 * 否则,重新new新的对象
		 */
		Integer i1 = new Integer(10);
		Integer i2 = new Integer(10);
		System.out.println(i1 == i2); //false
		System.out.println(i1.equals(i2));//true
		
		Integer i3 = 1000; //Integer i3 = new  Integer(1000);
		Integer i4 = 1000; //Integer i3 = new  Integer(1000);
		System.out.println(i3 == i4); //false
		System.out.println(i3.equals(i4));//true
		
		Integer i5 = 100; //IntegerCache.cache[i + (-IntegerCache.low)]
		Integer i6 = 100; //IntegerCache.cache[i + (-IntegerCache.low)]
		System.out.println(i5 == i6);//true
		System.out.println(i5.equals(i6));//true	
	}
}

String

常用方法

String str = "abcn12c3fcds";
charAt(index) 

获取指定下标对应的字符,返回char类型

indexOf("字符串")  
System.out.println(str.indexOf("cn2"));

获取指定字符串在原字符串中的下标,如果不包含该字符串则返回-1

System.out.println("abcd".equalsIgnoreCase(str))

判断两个字符串是否相等,忽略大小写

System.out.println(str.startsWith("12"));

判断字符串是否以指定的字符串开头,指定开始位置

str = str.substring(0, 5);

字符串截取,从指定的下标开始和结束 范围是左闭右开

//去除字符串前后的空格
String str = "      n你好。。        哈哈      ";
str = str.trim();
System.out.println(str);

去除字符串前后的空格

//String str = "abcADC你好";
//将字符串中的字母变成大写
//System.out.println(str.toUpperCase());
//将字符串中的字母变成小写
//System.out.println(str.toLowerCase());

大小写转换

StringBuffer、StringBuilder

进行拼接时,Buffer线程安全 但是效率低 Builder线程不安全 但是效率高

public class StringDemo {
	public static void main(String[] args) {
		String s1 = "ab";
		String s2 = "c";
		String s3 = new String("abc");
		
		String str1 = "abc";
		String str2 = "abc";
		String str3 = "ab" +"c";
		String str4 = s1 +s2;
		String str5 = new String("abc");
		String str6 = new String("ab")+"c";
		String str7 = s3.intern();
		/**
		 * String str1 = "abc";
		 * String str2 = "abc";
		 * 这个“abc”存放在常量池中,
		 * 常量池的特点:
		 *    首先会去常量池中找是否有“abc”这个常量字符串,如果有直接用str1指向它,
		 *	如果没有将“abc”放到常量池中,用str1指向它
		 *    再使用去常量池中找有没有“abc”,这个时候已经有了,直接使用str2指向它。
		 */
		System.out.println(str1 == str2);//true
		/**
		 * String str3 = "ab" +"c"; 
		 * 因为“ab”是常量与“c”拼接之后也会在常量池中。
		 */
		System.out.println(str1 == str3);//true
		/**
		 * String s1 = "ab";
		 * String s2 = "c";
		 * 当s1和s2拼接的时候,jdk会将s1和s2转换成StringBuilder类型,然后进行拼接操作,
		 * 最终的内容实在堆内存中。
		 */
		System.out.println(str1 == str4);//false
		/**
		 * String str1 = "abc"; 在常量池
		 * String str5 = new String("abc"); 在堆内存
		 */
		System.out.println(str1 == str5);//false
		/**
		 * String str5 = new String("abc");   在堆内存
		 * String str6 = new String("ab")+"c";在堆内存
		 */
		System.out.println(str5 == str6);//false
		/**
		 * String str1 = "abc"; 在常量池
		 * String str6 = new String("ab")+"c"; 在堆内存 
		 */
		System.out.println(str1 == str6);//false
		/**
		 * String str7 = s3.intern();
		 * intern方法的含义:将String类型的对象指向常量池,如果有直接指向,如果没有放一个指向
		 */
		System.out.println(str1 == str7);//true
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值