JAVA学习记录3.0

String

1.String表示字符串的类型,他属于引用数据类型
2.在Java中使用双引号括起来的都是String对象,而且括起来的字符串是不可以更改的。
3.括起来的字符串都直接存储在了方法区的“字符串常量池中”,这个样子可以提高执行效率。
eg:

public static Stringtest01{
	public static void main(string[]args){
		String s1="abc";
		String s2="abc"+"xy";
		String s3=new string(Original:"abc");
	}
}

new时新开辟了一个空间,在堆里保存了他的地址,指向string对象内容。
代码图解
在这里插入图片描述

String字符串的存储方式

public class User{
	private int id;
	private String name;
	public User(int id,string name){
		this.id=id;
		this.name=name;
	}
}
public class Usertest{
	public static void main(string[]args){
		User user=new User(id:110,name:"张三");
	}
}

代码图解:
如图所示,ID保存的是他的内容,name里保存的是他的地址,而不是内容。
在这里插入图片描述

==和equals()的区别

  • ==的使用
    1.==是一个运算符
    2.在基本数据类型变量和引用数据类型变量中出现
    3.如果比较的是基本数据类型变量,比较的两个变量保存的内容,如果是引用数据类型变量,比较的是两个对象的地址值,即两个引用是否指向同一个对象
  • equals()方法的使用
    1.他是个方法,适用于引用数据类型。
    2.Object类中定义的equals()方法和==的作用相同。
    3.String、Date、File、包装类等都重写了这个equals()方法,重写后比较的是内容而不是地址。
    在这里插入图片描述
    在这里插入图片描述

equals在String类中可以比较字符串内容

public class stringtest02{
	public static void main(string[]args){
		String s1="hello";
		String s2="hello";
		//这个时候hello已经在字符串常量池中,故s2不会再新建了,因为已经存在。
	System.out.println(s1==s2);//双等号在string类中比较的是字符串地址,结果为true
	String  x=new String(original:"xyz");
	String y=new String(original:"xyz");
	System.out.println(x == y);//此时的结果是false
	System.out.println(x.equals(y));//调用String类中的equals方法,比较的是字符串的内容。
	//这种也可以写作:
	System.out.println("xyz".equals(x));
	//或者是
	System.out.println(x.equals("xyz"));
	//但一般使用第一种可以避免空指针异常,因为当String x=null;时第一种结果是false,第二种则是报错。
	}
}

代码图解:
在这里插入图片描述

String类的构造方法

  • byte[] bytes={97,98,99};
    String s2=new String(bytes);
    System.out.println(s2);
    输出的是:abc
    byte可以将数字自动转换成对应的字符,进行输出。
    输出一个引用时,会自动调用to string方法,如果是object的话,会输出对象对应的内存地址。而string类已经重写了这个方法,会输出字符串本身。

  • String s3=new string(byte offect:1,length:2);
    System.out,println(s3);
    输出结果是:bc
    第一个代表起始位数组,第二位代表往后延伸的长度

  • char []chars={‘我’,‘是’,‘中’,‘国’,‘人’};
    String s4=new string(chars);
    system.out.println(s4);
    可以将数组转换成字符串

  • String s5=new String(char,2,3);
    System.out.println(s5);
    可以将一部分改为字符串
    在这里插入图片描述

String类的常用方法

char c ="中国人“.charAt(1);
System.out.println(c);

结果会输出国字。==char charAt(int index)==返回指定索引处的char值。
2.

int copareTo(String antherString)
//当进行字符串之间的大小比较时使用。

eg:

int result ="abc".compareTo("abc");
System.out.println(result);
//结果为0,前后一致。
int result2 ="abcd".compareTo("abce");
System.out.println(result2);
//结果为-1,前小后大。(8-9=-1)
int result3="abce".compareTo("abcd");
System.out.println(result3);
//结果为1,前大后小。
int result4 ="xyz".compareTo("yxz");
System.out.println(result4);
//结果为-1,当字符串第一个字母和后面字符串的第一个字母比较,能分出胜负就不在比较了。
 .bolean contains(CharSequence s)
 //判断前面的字符串中是否包含后面的字符串。

eg

System.out.println("HelloWorld.java".contains(".java");
//输出结果为true
System.out.println("http://www".contains("https://");
//输出结果为false。
boolean endwith(String uffix)
//判断当前字符串是否以某个字符串结尾。
使用:
System.out.println(test.txt".enfWith(".java");
//输出结果为false。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值