java基础--字符/字符串1(包含常见相关面试题)

8 篇文章 0 订阅

字符数据类型

  • 字符数据类型用来表示单个字符。字符字面值用单引号括住。
char letter = 'A';
char numChar = '4';
  • Unicode 和 ASCII码
      java内部使用二进制数。将字符映射到它的二进制形式的过程为编码。字符有着多种不同的编码方式。编码表定义该如何编码每个字符。
      java支持Unicode 码。一个16位的 Unicode 占两个字节,用\u开头的4位十六进制数表示,范围从’\u0000’-’\uFFFF’。
      大多数计算机是采用 ASCII ,它是表示所有大小写字母、数字、标点符号和控制字符的8位编码表。
常用字符的ASCII码
字符十进制编码值Unicode 值
‘0’~‘9’48~57\u0030 ~ \u0039
‘A’~‘Z’65~90\u0041 ~ \u005A
‘a’~‘z’97~122\u0061 ~ \u007A
  • 特殊字符的转义序列
转义序列名称Unicode 码十进制值
\b退格键\u00088
\tTab键\u00099
\n换行符\u000A10
\f换页符\u000C12
\r回车符\u000D13
\\反斜杠\u005C92
\ "双引号\u002234
  • 字符的比较和测试
    两个字符可以使用关系操作符进行比较,如同比较两个数字一样。这是通过比较两个字符的Unicode 值来实现的。为了方便Character提供了一下方法来进行字符测试。
Character类中的方法
方法描述
isDigit(ch)如果指定的字符是一个数字,返回true
isLetter(ch)如果指定的字符是一个字母,返回true
isLetterOrDigit(ch)如果指定的字符是一个字母或者数字,返回true
isLowerCase(ch)如果指定的字符是一个小写字母,返回true
isUpperCase(ch)如果指定的字符是一个大写字母,返回true
toLowerCase(ch)返回指定的字符的小写形式
toUpperCase(ch)返回指定的字符的大写形式

String类

  char 只是代表一个字符。为了表示一串字符,可以使用String。

String str = "Hello";

String 实际上与System类一样,都是java库中的一个预定义的类。String类型不是基本类型,而是引用类型。
String str = “Hello”;这样的代码布局如下:
在这里插入图片描述
因为String 类型是引用类型,所以对于下面这段代码:

String str1 = "Hello";
String str2 = str1;

内存布局如图:
在这里插入图片描述
注意:修改str1是无法对str2发生变换的。

str1 = "world";
System.out.println(str2);
// 执行结果
Hello

事实上,str1 = “word” 这样的代码并不算“修改”字符串,这个引用重新指向了新的String对象。
在这里插入图片描述

String str1 = new String ("Hello");
//这样的创建方式是相当于在堆上重新开辟空间来存储内容,也就是内存中有两份的“Hello”。

有关于String的方法

下面是一些关于String 的一些方法:

String对象的简单方法
方法描述
length()返回字符串中的字符数
charAt(index)返回字符串指定位置的字符
concat(s1)将本字符串和字符s1连接,返回一个新的字符串
toUpperCase()返回一个新字符串,其中所有的字母大写
toLowerCase()返回一个新字符串,其中所有的字母都小写
trim()返回一个新字符串,去掉了两边的空白字符
String 对象的比较方法与获取子串方法
方法描述
equals(s1)如果该字符串等于字符串s1,返回true
compareTo(s1)返回一个大于0 、等于0、小于0的整数,表明该字符串是否大于、等于、或小于s1
startsWith(prefix)如果字符串以特定的前缀开始,返回true
endsWith(suffix)如果字符串以特定的后缀结束,返回true
contains(s1)如果s1是该字符串的子字符串,返回true
substring(beginIndex)返回该字符串的子串,从beginindex到结尾
substring(beginIndex,endIndex)返回字符串的子串,从beginIndex到endIndex
indexOf(ch)返回字符串出现第一个ch的下标。如果没有,返回-1
indexOf(ch,fromIndex)返回字符串formIndex之后出现的第一个ch的下标,如果没有返回-1

面试题

  1. String是基本数据类型吗?
    String不是基本数据类型。

  2. String是可变的话?
    String是final类型的,不可变。

  3. 怎么比较两个字符串的值一样,怎么比较两个字符串是否同一对象?
    比较字符串的值是否相同用equals,比较字符串对象是否同一个用==。

  4. switch中可以使用String吗?
    在java中switch后的表达式的类型只能为以下几种:byte、short、char、int(在Java1.6中是这样),在java1.7后支持了对string的判断。

  5. String与byte[]两者相互之间如何转换?
    String --> byte[] 通过String类的getBytes方法;byte[] > String通过new String(byte[])构造器。

  6. 可以自定义java.lang.String类并使用吗?
    可以自定义java.lang.String类并编译成功,但不能被加载使用,具体请学习类加载机制。参考文献:https://www.cnblogs.com/liuheng0315/p/7160794.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值