Java编程入门笔记(五)

版权声明:本文为邪三一原创文章,未经邪三一允许不得转载 https://blog.csdn.net/Caoyang_He/article/details/82747574

孤独但不寂寞——字符串类

今天发生了很多事,反思了一下最近的生活和学习,发生最近的博客没有起到太多学习的作用,反倒有点像是女生做笔记,凡事做的巨细无比,但这起不到归纳总结的作用,所以今后可能文字会越来越少,甚至不写。但是好消息是csdn的markdown今天又有大的更新了。我看了一下多了一些新的内容,我忍不住去试一下,所以博客还是会坚持写的!
谈一下字符串

字符串在生活中十分常见,例如我们常说的“Hello World!”。
String类位于java.lang包中,具有丰富的方法
计算字符串的长度、比较字符串、连接字符串、提取字符串

如何新建一个字符串对象?
从此处就可以看出string是一个类型数据

String s = "Hello World";
String s = new String();
String s = new String("Hello World");

Java中任何对象都能通过其toString()方法转换成字符串进行输出,方便调试。
这是由于原始基类Object里面有这个方法

获取字符串长度
String类提供了length()方法,获得字符串的长度 。
注意:Java返回的字符串长度是以Unicode字符为基础计算的。(一个中文汉字算一个字符

字符串比较
String类提供了equals( )方法,比较存储在两个字符串对象的内容是否一致。

“==”和equals()有什么区别呢?
equals():检查组成字符串内容的字符是否完全一致
==:判断两个字符串在内存中的首地址,即判断是否是同一个字符串对象

登录时一般不考虑用户名的大小写问题
使用equalsIgnoreCase()方法
使用toLowerCase()方法
使用toUpperCase( )方法

字符串连接
方法1:使用“+”

int sqlScore = 80;                      //sql成绩
int javaScore = 90;                    //java成绩
int htmlScore = 86;         //html成绩
String scoreSheet = "SQL:" + sqlScore + "  Java:" + 			javaScore + "  HTML:" + htmlScore; 

方法2:使用String类的concat()方法

String s = new String("你好,");
String name = new String("张三!");
String sentence = s.concat(name);
System.out.println(sentence);

字符串常用提取方法
在这里插入图片描述
在这里插入图片描述

字符串拆分
String类提供了split()方法,将一个字符串分割为子字符串,结果作为字符串数组返回

public class Lyric {
    	public static void main(String[] args) {
        	String words="长亭外 古道边 芳草碧连天 晚风扶 柳笛声残 夕阳山外山";
        	String[	] printword=new String[100];		
       		System.out.println("***原歌词格式***\n"+words);
        	System.out.println("\n***拆分后歌词格式***");
        	printword=words.split(" "); 
			for(int i=0;i<printword.length;i++){
        		System.out.println( printword[i] );
        	}
    	}
}

这个例子不太好,因为在for循环里面执行判断时,要先计算
printword.length,这个比较耗时间。

在Java执行时会维护一个String池(Pool),当直接在程序中使用“”来包括一个字符串时,该字符串就会在String池中。
对于一些可以共享的字符串对象,会先在String池中查找是否存在相同的String内容(字符相同),如果有就直接返回,而不是直接创造一个新的String对象,以减少内存的耗用。

所以String str1=“abc”; 和 String str2 =“abc”;都是指向的同一内存

字符串的修改
Java中使用字符串有一个非常重要的规则必须记得,一个字符串对象一旦被配置,它的内容就是固定不可变的。
所以每次修改string的值,其实都是指向另一个内存。

StringBuffer
每次想改变String对象,都要创建一个新的String对象,效率低
对字符串频繁修改(如字符串连接)时,使用StringBuffer类可以大大提高程序执行效率

StringBuffer声明

StringBuffer sb = new StringBuffer();
StringBuffer sb = new StringBuffer("aaa");

StringBuffer的使用

sb.toString();           //转化为String类型
sb.append("**");      //追加字符串
sb.insert (1, "**");    //插入字符串

String和StringBuffer性能对比
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Caoyang_He/article/details/82747574