字符与字符串

本文详细介绍了Java中的字符(char)和字符串(String)类型,包括它们的内存占用、转换方法、大小写操作、数字和字符判断,以及字符串的长度、下标、连接和不可变特性,最后提到了空值(null)的处理。
摘要由CSDN通过智能技术生成
// char(字符):基本数据类型,仅能保存1个字符,使用单引号''包围
//String(字符串):引用数据类型,能保存0-N个字符,使用双引号""包围

1.字符类型

        字符类型char是基本数据类型,它是character的缩写。一个char保存一个Unicode字符。

        每个字符都按照Unicode编码集存储,每个字符占2个字节的内存空间。

        英文字母只使用1个字节(还有一个字节空闲,造成资源浪费),汉字使用2个字节。

        例如:

public static void main(String[] args) {
		//存储英文
		char c1 = 'A';
		char c11 = 65;  //十进制(Unicode编码值)
		System.out.println(c11); //A
		
		//存储中文
		char c2 = '中';
		char c22 = 20013;  //十进制(Unicode编码值)
		System.out.println(c22); //中
        
		//字符与int之间自动转换
		int n1 = 'A';
		System.out.println(n1); //65
		
		int n2 = '中';
		System.out.println(n2); //20013
		
		int n3 = 'A' + 32;//计算结果为int
		char n4 = 'A' + 32;//计算结果为int,自动转换成char
		char n5 = (char)(c1 + 32);//计算结果为int,需要手动转换成char
	}

2.字符类型的常见操作

  • 字符大小写转换
  • public static void main(String[] args) {
    		//大小写转换
    		//转换为小写
    		char upper = 'B';
    		char lower = (char)(upper + 32);
    		System.out.println(lower);
    		
    		//转换为大写
    		lower = 'r';
    		upper = (char)(lower -32);
    		System.out.println(upper);
    		
    		//大小写反转
    		char c = 'c';
    		
    		char ret = (char)(c>='A'&&c<='Z'?(c+32):(c-32));
    		System.out.printf("%s=>%s",c,ret);
    		
    	}
  • 判断字符是否是数字?
  • //数字
    char c1 = '3';
    System.out.printf("%s是否是数字?%s\n",c1,c1 >= 48 && c1 <= 57);
    System.out.printf("%s是否是数字?%s\n",c1,c1 >= '0'&& c1 <= '9');
  • 判断字符是否是英文(大写、小写)?
  • //英文字母(大写、小写)的判断
    char c1 = 'a';
    System.out.printf("%s是否是英文字母?%s\n",c1,c1 >= 'A' && c1 <= 'Z' || c1 >= 'a' && c1 <= 'z');
  • 判断字符是否是中文?
  • //判断是否为中文
    char c3 = '是';
    System.out.printf("%s是否是汉字?%s\n",c3,c3 >= 0x4E00 && c2 <= 0x29FA5);
    System.out.println((char)0x4E00);
    System.out.println((char)0x29FA5);

3.字符串类型

字符串类型String是引用类型,用双引号"..."表示字符串。一个字符串可以存储0-N个字符

例如:

//String可以保存0-N个字符
String s1 = "";  //0个字符
String s2 ="ABC";  //三个字符
String s3 = "但使龙城飞将在";  //7个字符
String s4 = "唧唧复唧唧 木兰当户织";  //11个字符

//特殊字符需要用转义符\
String s5 = "除去\"巫山\"不是云";  //9个字符
String s6 = "ABC\\DEFG";  //8个字符

System.out.println(s1 + "=>" + s1.length());  //=>0
System.out.println(s2 + "=>" + s2.length());  //ABC=>3
System.out.println(s3 + "=>" + s3.length());  //但使龙城飞将在=>7
System.out.println(s4 + "=>" + s4.length());  //唧唧复唧唧 木兰当户织=>11
System.out.println(s5 + "=>" + s5.length());  //除去"巫山"不是云=>9
System.out.println(s6 + "=>" + s6.length());  //ABC\DEFG=>8

字符串的每个字符,按照顺序都拥有一个数字下标,从 0 开始。例如 : 字符串"猪八戒"中的字符"猪"的下标为 0 ,字符"八"的下标为 1 。

4.常用字符串操作

1.      方法1:.length()

        作用:获取字符串的长度

String password = "ertyuiopvbfghjklnm";
		
//密码长度
int len = password.length();

//密码是否符合要求
String msg = len >= 6 && len <=20?(len<=9?"弱":(len<=15?"中":(len<=20?"强":""))):"密码长度不符合要求";
		
System.out.println(msg);    //强

2.     方法2:charAt()方法

        作用:获取字符串指定位置(下标)的字符

String s1 = "大漠孤烟直,长河落日圆";
char first = s1.charAt(0);
char last = s1.charAt(s1.length()-1);
char chs4 = s1.charAt(3);

System.out.println("首字母:"+first);  //首字母:大
System.out.println("尾字母:"+last);  //尾字母:圆
System.out.println("第四个字符:"+chs4);  //第四个字符:烟

3.     方法3:toUpperCase()或toLowerCase()

        作用:转换成大写或者小写

String s2 = "IYFGIkuigiygC";
String s3 = s2.toUpperCase();
String s4 = s2.toLowerCase();

System.out.println("源字符串:"+s2);  //源字符串:IYFGIkuigiygC
System.out.println("大写字符串:"+s3);  //大写字符串:IYFGIKUIGIYGC
System.out.println("小写字符串:"+s4);  //小写字符串:iyfgikuigiygc

4.     方法3:substring()

        作用:截取字符串

String s5 = "刘德华为什么不演反派?遥遥领先";
String s6 = s5.substring(2,4);
String s7 = s5.substring(3);
		
System.out.println("源字符串:"+s5);  //源字符串:刘德华为什么不演反派?遥遥领先
System.out.println("子字符串1:"+s6);  //子字符串1:华为
System.out.println("子字符串2:"+s7);  //子字符串2:为什么不演反派?遥遥领先

5.     方法4:indexOf()

        作用:查找在当前字符串中“指定字符串”的 下标位置

String s8 = "asdfghj";
		
//如果不存在,则返回-1
int index1 = s8.indexOf("sos");
System.out.println(index1);  //-1
		
//如果存在,则返回下标位置
int index2 = s8.indexOf("fg");
System.out.println(index2);  //3

5.字符串连接

Java的编译器对字符串进行特殊处理,可以使用+连接任意字符串和其他数据类型,简化字符串的处理。

public class Text08 {
	public static void main(String[] args) {
		String s1 = "Hello";
		String s2 = "world";
		String s = s1 + " " + s2 + "!";
		System.out.println(s);  //Hello world!
	}

}

6.字符串不可变特性

Java的字符串除了是一个引用类型外,还有个重要特点,就是字符串不可变。

public class Text09 {
	public static void main(String[] args) {
		String s = "hello";
		System.out.println(s);  //hello
		
		s = "world";
		System.out.println(s);  //world
	}

}

        首先,执行String s = "hello"; 时,JVM 虚拟机先创建字符串"hello”,然后,把字符串变量s指向它。

7.空值null

  • 39
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值