字符相关
2016-07-09 20:35
417 查看
一、字符类型
char是Java的一种基本数据类型,也是Java中的保留字。char在Java中占两个字节,无符号类型,是16位二进制Unicode字符。
char是类型表示的是字符,不是字符串;
char类型变量值只能用单引号来表示,不可使用双引号;
即表示单引号内的单个字符。
![](https://img-blog.csdn.net/20160720005324976)
二、字符串类
1、String
(1)String类表示字符串,是字符串常量(另:常量池),其值在创建后不能改变,因此Stirng对象创建后是不可变的,直至到被GC回收。
(2)创建String对象
(3)常见方法
I.获取字符串长度与某个字符
II.str.compareTo方法
该方法的作用是比较两个字符串的大小,比较的原理是依次比较每个字符的字符编码。首先比较两个字符串的第一个字符,如果第一个字符串的字符编码大于第二个的字符串的字符编码,则返回大于0的值,如果小于则返回小于0的值,如果相等则比较后续的字符,如果两个字符串中的字符编码完全相同则返回0。
III.截取方法
IV.连接方法
V.查找方法
VI.replace方法
该方法的作用是替换字符串中所有指定的字符,然后生成一个新的字符串。经过该方法调用以后,原来的字符串不发生改变。
VII.split方法
以特定的分隔符分隔字符串,生成一个 数组。
2、Stringbuffer
同样是字符串类,Stringbuffer 是字符串变量,实现方式与String有所不同,在进行处理字符串时不生成新的对象。在存储和操作字符串操作比String更合适。
I.字符串拼接
II.dele
4000
teCharAt方法
![](https://img-blog.csdn.net/20160724035037353)
此外,字符串操作相关的方法还有insert插入、reverse反转倒序、setCharAt修改某个下标上的字符、trimToSize将StringBuffer对象的中存储空间缩小到和字符串长度一样的长度,减少空间的浪费。
3、Stringbuilder
Stringbuilder和StringBuffer基本类似,相关方法也一样
4、String、StringBuffer和Stringbuilder的具体区别
[以下复制,来自其他博主总结]
String:字符串常量
StringBuffer:字符创变量,线程安全
StringBuilder:字符创变量,非线程安全
如果要操作少量的数据用String
单线程操作字符串缓冲区下操作大量数据StringBuilder
多线程操作字符串缓冲区下操作大量数据StringBuffer
5、其他[引用]
I.字符串比较”==”与equal()方法
“==” 判断两个引用的是不是同一个内存地址(同一个物理对象).
equals 判断两个字符串的值是否相等.
除非你想判断两个string引用是否同一个对象,否则应该总是使用 equals()方法.
II.密码及其他问题上char[]优先于String原因
String是不可变对象, 意思是一旦创建,那么整个对象就不可改变. 即使新手觉得String引用变了,实际上只是(指针)引用指向了另一个(新的)对象.
而程序员可以明确地对字符数组进行修改,因此敏感信息(如密码)不容易在其他地方暴露(只要你用完后对char[]置0).
char是Java的一种基本数据类型,也是Java中的保留字。char在Java中占两个字节,无符号类型,是16位二进制Unicode字符。
char是类型表示的是字符,不是字符串;
char类型变量值只能用单引号来表示,不可使用双引号;
即表示单引号内的单个字符。
/** * @author shen * @desc char test * @date 2016年7月15日 */ public class CharTest { public static void main(String[] args) { //单引号内的单个字符 char test = 'C'; System.out.println(test); //数组 char cha[] = {'J','a','v','a'}; System.out.println(cha); //Unicode编码,每一个字符用16位2进制数标识 char ucode = '\u4F60';//20320 char hao = '\u597d';//22909 System.out.print(ucode); System.out.println(hao); //转换成的对应值 System.out.println( ucode + hao); } } 由于其编码方式,编码方式最多有65536种,远不足以使用,以及在数据库存储的一些问题,在一般情况下,char在java中的实际使用比较少,也并不推荐使用。
二、字符串类
1、String
(1)String类表示字符串,是字符串常量(另:常量池),其值在创建后不能改变,因此Stirng对象创建后是不可变的,直至到被GC回收。
(2)创建String对象
public class StringTest { public static void main(String[] args) { String str1 = "Java";//直接创建 String str2 = new String();//面向对象基本创建方法,有时浪费内存 str2 = "C++"; String str3 = new String("C");//String类提供许多构造创建方法和其他方法,详JDK源码 System.out.println(str1+"--"+str2+"--"+str3); } }
(3)常见方法
I.获取字符串长度与某个字符
String str = "Java Code"; str.charAt(0);//获取某个下标对应字符 str.length();//字符串长度
II.str.compareTo方法
该方法的作用是比较两个字符串的大小,比较的原理是依次比较每个字符的字符编码。首先比较两个字符串的第一个字符,如果第一个字符串的字符编码大于第二个的字符串的字符编码,则返回大于0的值,如果小于则返回小于0的值,如果相等则比较后续的字符,如果两个字符串中的字符编码完全相同则返回0。
String data1 = "Javi"; String data2 = "Java"; int value = data1.compareTo(data2);
III.截取方法
String str = "Java Code"; String subStr = str.substring(7);//截取得到从某个下标之后的字符串 String sub = str.substring(0, 5);//截取区间之内的字符串
IV.连接方法
String st1 = "Java"; String st2 = "Code"; String st = st1.concat(st2);//连接组成一个新的字符串JavaCode String stt = st1+st2;//更直接的做法JavaCode String sst = st1+007;//参与连接中有字符串按字符串连接Java007
V.查找方法
String str = "Java Code"; int i = str.indexOf('o');//某个在字符串第一次出现的下标,不存在则返回-1 int j = str.indexOf('o', 7);//从第几个字符开始查,返回下标,不存在则返回-1
VI.replace方法
该方法的作用是替换字符串中所有指定的字符,然后生成一个新的字符串。经过该方法调用以后,原来的字符串不发生改变。
String str = "Java Code"; String s = str.replace("Java", "C++");//把Java代替成C++
VII.split方法
以特定的分隔符分隔字符串,生成一个 数组。
String data = "java,c++,c,c#"; String arr[] = data.split(","); for(int k = 0;k<arr.length;k++){ System.out.println(arr[k]); }
2、Stringbuffer
同样是字符串类,Stringbuffer 是字符串变量,实现方式与String有所不同,在进行处理字符串时不生成新的对象。在存储和操作字符串操作比String更合适。
I.字符串拼接
StringBuffer data = new StringBuffer("The");//创建对象 StringBuffer data1 = data.append(" Great");//拼接方法 String str = " Wall"; data1.append(str).append("!");
II.dele
4000
teCharAt方法
此外,字符串操作相关的方法还有insert插入、reverse反转倒序、setCharAt修改某个下标上的字符、trimToSize将StringBuffer对象的中存储空间缩小到和字符串长度一样的长度,减少空间的浪费。
3、Stringbuilder
Stringbuilder和StringBuffer基本类似,相关方法也一样
4、String、StringBuffer和Stringbuilder的具体区别
[以下复制,来自其他博主总结]
String:字符串常量
StringBuffer:字符创变量,线程安全
StringBuilder:字符创变量,非线程安全
如果要操作少量的数据用String
单线程操作字符串缓冲区下操作大量数据StringBuilder
多线程操作字符串缓冲区下操作大量数据StringBuffer
5、其他[引用]
I.字符串比较”==”与equal()方法
“==” 判断两个引用的是不是同一个内存地址(同一个物理对象).
equals 判断两个字符串的值是否相等.
除非你想判断两个string引用是否同一个对象,否则应该总是使用 equals()方法.
II.密码及其他问题上char[]优先于String原因
String是不可变对象, 意思是一旦创建,那么整个对象就不可改变. 即使新手觉得String引用变了,实际上只是(指针)引用指向了另一个(新的)对象.
而程序员可以明确地对字符数组进行修改,因此敏感信息(如密码)不容易在其他地方暴露(只要你用完后对char[]置0).
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树