1.初始化

String类是Java预定义类,非基本类型而是引用类型。

public class StudyString {
public static void main(String[] args) {
String s1="Hello World";//初始化1
String s2=new String("Hello World");<span style="font-family: Arial, Helvetica, sans-serif;">//初始化2</span>
char[] charArray={'H','e','l','l','o',' ','W','o','r','l','d'};
String s3=new String(charArray);<span style="font-family: Arial, Helvetica, sans-serif;">//初始化3</span>
String s4=s1;//相同指向,true
String s5="Hello World";//相同字符串直接量,s1==s5,true System.out.println((s1==s2)+
" "+(s1==s3)+
" "+(s2==s3)+
" "+(s1==s4)+
" "+(s1==s5));//false false false true true,相同的字符串序列的直接量,使用同一个实例
System.out.println(s1.equals(s2)+
" "+s1.equals(s3)+
" "+s2.equals(s3)+
" "+s1.equals(s4));//true true true true<pre name="code" class="java"><span style="font-family:Arial, Helvetica, sans-serif;"> }}</span>

JVM中默认,具有相同字符串序列的字符串直接量使用同一个实例。如s5==s1为真。

2.常用函数

❶字符串间比较(是否相等,是否区域匹配,头匹配和尾匹配)

❷字符串长度和字符串拼接

              length():int                         返回长度,数组则为成员变量length
charAt(int):char 返回指定下标的字符
concat(String s1):String 返回与s1拼接的字串,‘+’也可以实现

计算机中,字符串的值以私有数组的形式储存。可以使用字符串常量直接调用相关函数。

   ❸获取子串: 
          substring(int startIndex,int endIndex):String;//后一个参数可以为空,默认为末尾,割取索引 startIndex-endIndex-1的子字符串

❹字符串的转换、替换和分割成字串(大小写转换,替换,分割子串,正则表达式的匹配和分割)

replace(old,new)。用来进行字符串或者字符替换。均不改变原来的数据,只是返回变动后的字符串。默认匹配的字符或者字符串全部替换,可以使用replaceFirst仅仅更改第一匹配位置。

    正则表达式的多字符匹配和分割
     ⑴matches()匹配检查比equals()更加强大。比如匹配目标可以是正则表达式“Java.*”,所有以“Java”开头的字符串都与之匹配。返回boolean。如

⑵使用replaceFirst,replaceAll,替换源目标为正则表达式。
      String s="a+b$#c".replaceAll("[$+#]","NNN");//输出aNNNbNNNNNNc,所有的$,+,#均被替换
     ⑶使用splitf分割字符串成字符串数组
              String[] s="Java,chb.china?ppp".split("[,.?]");//[]里面都认为是分界符号,返回以这些字符为分界符分割成字符串数组。 

❺将字符或数值转换为字符串

Double.parseDouble(str)或者Integer.parseInt(str)将字符串转换成double或者Int型

❻字符串中匹配字符串或字符的位置

注明:返回的所有下标,均是指是在源字符串中的下标。indexof返回的是fromindex之后的最先一次坐标,lastindexof返回的是fromIndex之前的最后一次下标

   ❼字符串和数组的相互转换
    toArray()将String转换成字符数组
    getcChars(int srcBegin,int srcEnd,dst,int dstBegain);//将[srcBegain srcEnd-1]的字符复制到字符数组dst从下标dstBegain开始的位置
    字符数组到字符串:使用String构造法或者valueOf()。

 子函数测试代码:

public class StudyString {
public static void main(String[] args) {
String s1="Hello World"; System.out.println(s1.regionMatches(2, "Hello",2,3)+" "
+s1.regionMatches(true, 2, "HeLLo",2,3));//true true System.out.println(s1.concat(new String(" Java!")));//字符拼接,输出 Hello World Java!
System.out.println("Java!".charAt(0));//可以 使用直接量直接调用函数 System.out.println(" abcd ".trim());//去掉两边的空格,返回"abcd" System.out.println("abcdabca".replace("a","CHB"));//返回"CHBbcdCHBbcCHB" String[] s="abcd,fg.gs#t".split("[,.#]");//返回"abcd"
for(String u:s)
System.out.println(u);//输出abcd fg gs t }
}
⑴  ""+i
⑵ new Integer(i).toString();
⑶ String.valueOf(i);
⑷ Integer.toString(i);

可读性:1差,2次之,3和4很好,.

  性能:1最差,2次之,4最佳,3几乎直接调用4。测试循环执行一段转换时所用时间大概为
3:2:1:1.

4.控制台读取String

❶忽略开头的空格字符,使用next()读取以空白字符(' ','\t','\f','\r','\n',空格,制表,换纸,回车,换行)结束的字符串;

❷使用nextline读取一整行文本(以回车键'\n'结束)的字符串。

  输入16进制转换成10进制数:
import java.util.Scanner;
public class StudyString {
private static Scanner input;
public static void main(String[] args) {
input = new Scanner(System.in);
String hexNumber=input.next();
int decimalNumber=0;
for(int i=0;i<hexNumber.length();i++)
decimalNumber=16*decimalNumber+hexTodecimal(hexNumber.charAt(i)); System.out.println(hexNumber+"对应的10进制数为"+decimalNumber); }
public static int hexTodecimal(final char ch)
{
if('A'<=ch&&ch<='F')
return 10+ch-'A';
else
return ch-'0';
}
}

Java探索之旅(13)——字符串类String的更多相关文章

  1. Java中各种集合(字符串类)的线程安全性!!!

    Java中各种集合(字符串类)的线程安全性!!! 一.概念: 线程安全:就是当多线程访问时,采用了加锁的机制:即当一个线程访问该类的某个数据时,会对这个数据进行保护,其他线程不能对其访问,直到该线程读 ...

  2. 设计一个字符串类String(C++练习题)

    要求:设计一个字符串类String,可以求字符串长度,可以连接两个串(如,s1=“计算机”,s2=“软件”,s1与s2连接得到“计算机软件”),并且重载“=”运算符进行字符串赋值,编写主程序实现:s1 ...

  3. Java探索之旅(15)——包装类和字符类

    1.包装类 ❶出于对性能的考虑,并不把基本数据类型作为对象使用,因为适用对象需要额外的系统花销.但是某些Java方法,需要对象作为参数,例如数组线性表ArrayList.add(Object).Jav ...

  4. Java:字符串类String的功能介绍

    在java中,字符串是一个比较常用的类,因为代码中基本上处理的很多数据都是字符串类型的,因此,掌握字符串类的具体用法显得很重要了. 它的主要功能有如下几种:获取.判断.转换.替换.切割.字串的获取.大 ...

  5. Java探索之旅(2)——GUI输入输出与代码的规范性

    1.知识点概叙 ① 定名常量:关键字final,类似C++ const定义,一般用大写:final double PI=3.1415926 ② 5/2=2:5.0/2=2.5://通常意义的除法,至少 ...

  6. Core Java 总结(字符和字符串类问题)

    所有代码均在本地编译运行测试,环境为 Windows7 32位机器 + eclipse Mars.2 Release (4.5.2) 2016-10-17 整理 字符,字符串类问题 正则表达式问题 J ...

  7. Java探索之旅(12)——equals方法及其覆盖

    1.Object中的equals方法 java中的的基本数据类型:byte,short,char,int,long,float,double,boolean.==比较的是值. ❶作用:对于复合类型来说 ...

  8. Java探索之旅(11)——抽象类与接口

    1.Java数据类型       ❶不可变类,是指当创建了这个类的实例后,就不允许修改它的属性值. 它包括:         Primitive变量:boolean,byte, char, doubl ...

  9. Java探索之旅(10)——数组线性表ArrayList和字符串生成器StringBuffer/StringBuilder

    1.数组线性表ArrayList 数组一旦定义则不可改变大小.ArrayList可以不限定个数的存储对象.添加,插入,删除,查找比较数组更加容易.可以直接使用引用类型变量名输出,相当于toString ...

随机推荐

  1. sql查询字段是否为空

    sql 查询某字段为空 select * from 表名 where 字段名 is null sql 查询某字段不为空 select * from 表名 where 字段名 is not null s ...

  2. 3.09课·········for穷举和迭代

    for循环拥有两类:穷举和迭代穷举:把所有可能的情况都走一遍,使用if条件筛选出来满足条件的情况. 1.单位给发了一张150元购物卡,拿着到超市买三类洗化用品.洗发水15元,香皂2元,牙刷5元.求刚好 ...

  3. Vue-Quill-Editor回显不显示空格的处理办法

    我自己在用VUE做一个博客网站,查了一下好多人都在用Vue-Quill-Editor,于是我也把这个插件加入到我的程序里,可是后来却出现了个问题,如图: 简单的代码如下: <template&g ...

  4. origin与referer的区别

    referer显示来源页面的完整地址,而origin显示来源页面的origin: protocal+host,不包含路径等信息,也就不会包含含有用户信息的敏感内容 referer存在于所有请求,而or ...

  5. 20145229吴姗珊 《Java程序设计》第5周学习总结

    20145229吴姗珊 <Java程序设计>第5周学习总结 教材学习内容总结 第八章 异常处理 1.设计错误对象都继承自java.lang.Throwable类 2.Java中所有错误都会 ...

  6. python 常用的字符串方法

    st = ' hello Kitty 'str = 'hello {name} {age}' #print(st.format(name='fadfa'))#常用的字符串方法print(st.coun ...

  7. C、C++、Java、JavaScript、PHP、Python、Ruby 这些语言分别主要用来开发什么?

    C.C++.Java.JavaScript.PHP.Python.Ruby 这些语言分别主要用来开发什么? pansz,欢迎评论 此贴纯科普用,以下仅仅说主要用途,其他用途限于篇幅关系省略之,不要钻牛 ...

  8. ibatis的resultClass与resultMap 的区别

    ibatis的resultClass与resultMap还是有很大的区别.以下是我碰到的一个问题. 配置文件写法如下: 1 sqlMap2 typeAlias alias="notice&q ...

  9. Vue2.0 探索之路——vuex入门教程和思考

    Vuex是什么 首先对于vuex是什么,我先引用下官方的解释. Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可 ...

  10. IBM V3500存储恢复步骤实例(linux)

    本环境是一有台IBM3500存储,将存储挂载至linux的/data目录,模拟测试当主服务器挂了,将数据恢复到另一台服务器,存储有两个地址,我配置的是192.168.80.59是用于web管理,192 ...