博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
字符串
阅读量:6201 次
发布时间:2019-06-21

本文共 5956 字,大约阅读时间需要 19 分钟。

1、String字符串一般不用new来初始化。字符串最大的特点是一旦被初始化就不可以再修改,String为final类。字符串常见操作有获取和判断。字符串定义了后放在字符串池中,是一个常量,一旦新的字符串定义就检测字符串池有没有这个字符串,如果有就将之赋给新的字符串。用new创建字符串时是定义两个字符串,白开辟了一个空字符串空间。

1 package pack; 2  3 public class Test 4 { 5     public static void main(String[] args)  6     { 7         String str=new String();    //这种方式不常见 8         str="hahahah"; 9         10         String s="hehehehe";        //一般是这种定义方式,s为指向"hehehehe"对象的引用11         s="lalalala";                //此时s为指向"lalalala"对象的引用,对象本身没有变,也不可以变12         13         String str1=new String("nnnnnn");14         String str2="nnnnnn";15         String str3="nnnnnn";16         //str1和str2的区别是:str1在内存中有一个对象,str2有两个对象。17         System.out.println(str1==str2);    //判断两个对象是否相同,此时是两个对象,当然不同18         System.out.println(str2==str3);    //内存中的常量池使str3不再重复开辟空间19         System.out.println(str1.equals(str2));    //判断两个字符串是否相同20         getString();21         getIs();22     }23     public static void str(Object obj)24     {25         System.out.println(obj);26     }27     public static void getString()28     {29         String s="abcdefghi";30         str(s.length());31         str(s.charAt(3));32         str(s.indexOf('n',3)); //找不到就返回-133         str(s.lastIndexOf("f"));34     }35     public static void getIs()36     {37         String str1="ArrayDemo.java";38         //判断文件是否以Array开头39         str(str1.startsWith("Array"));40         //判断文件是否是.java文件41         str(str1.endsWith(".java"));42         //判断字符串中是否有某个子串Demo43         str(str1.contains("Demo"));44     }45 }

2、String类的操作

1 package pack; 2 //字符串的转换动作、替换动作、切割动作和获得字符串中的一部分子串,转换大小写,将字符串两端的多个空格去除,对两个字符串进行自然顺序的比较 3 public class Test 4 { 5     public static void main(String[] args)  6     { 7         /*将字符数组转换为字符串 8          * 构造函数:String(char[]); 9          * 构造函数:String(char[],offset,count);一部分转化为字符串10          * 静态方法:static String copyValueOf(char[]);11          *         static String copyValueOf(char[] data,int offset,int count);12          *         static String valueOf(char[]);13          */14         char[]    a={'a','b','c','d','e'};15         String a1=new String(a);16         String a2=new String(a,1,3);17         sop("a1="+a1);18         sop("a2="+a2);19         /*将字节数组转换为字符串20          * 构造函数:String(byte[]);21          * 构造函数:String(byte[],offset,count);一部分转化为字符串22          */23         24         /*将字符串转成字符数组25          * char[] toCharArray();26          */27         28         /*将字符串转成字节数组29          * byte[] getBytes();30          */31     32         //字符串和字节数组在转换的过程中是可以制定编码表的33         34         35         //字符串的替换动作36         /*String replace(oldchar,newchar);37          * 如果要替换的字符串不存在就返回原字符串38          */39         String a3="hello java";40         String a33=a3.replace('h', 'n'); //字符串不可以被修改,这是又新定义了一个字符串a3341         String a4="hello java1";42         String a5="hello java2";43         a3.replace('a', 'b');44         a4.replace('x', 'b');45         String a6=a5.replace("hello", "nohello");//连续字符串替换需要新定义字符串46         sop("a3="+a3);47         sop("a33="+a33);48         sop("a4="+a4);49         sop("a6="+a6);50         51         //字符串切割动作52         /*String[] split(regex);53          * 54          */55         String s="zhangsan,lisi,wangwu";56         String[] arr=s.split(",");57         for(int i=0;i

3、字符串的组成原理就是通过StringBuffer类来实现的。StringBuffer是一个容器(在容器中可以添加任何东西,但容器只有一个),一个字符串缓冲区,具有增删改查的特性,不能被继承,长度是可变的,可以操作多个数据类型,最终会通过toString方法变成字符串。

1 package pack; 2 //StringBuffer类 3 public class Test 4 { 5     public static void main(String[] args)  6     { 7         //存储:append();方法将字符串放入缓冲区末尾 8         //存储:insert();方法可以将字符插入指定的位置处 9         //删除:StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end10         //删除:s.deleteCharAt(index);11         //清空缓冲区:s=new StringBuffer();重新在定义12         //情况缓冲区:s.delete(0,arr.length());13         //获取:char charAt(index);int inexOf(String str);int lastIndexOf(String str);int length();14         //        String subString(int start,int end);15         //修改:StringBuffer replace(start,end,str);void setCharAt(index,'char');16         //反转:StringBuffer reverse();17         //getChars();将字符数组中指定位置的字符存到一个字符数组中18         StringBuffer s=new StringBuffer();19         s.append("abcd").append("eeee");20         s.insert(2, "bbbb");21         sop(s);22         sop(s.delete(0, 1));23         sop(s.deleteCharAt(0));24     }25     public static void sop(Object obj)26     {27         System.out.println(obj);28     }29 }

4、StringBuilder是StringBuffer的替代方案。前者是1.5版本后出现的,是线程不同步的,后者是线程同步的。多个线程,建议使用StringBuffer。StringBuilder的效率高,建议使用它开发。一般升级的三个因素是:安全性、代码简洁性、提高效率。

5、基本数据类型和引用数据类型:byte,int,short,long,boolean,float,double,char和Byte,Integer,Short,Long,Boolean,Float,Double,Character。引用类型的最多用处是基本数据类型和字符串之间的转换。

1 package pack; 2 //基本数据类型的引用类型 3 public class Test 4 { 5     public static void main(String[] args)  6     {         7         sop(Integer.MAX_VALUE); 8         //基本数据类型转字符串的两种方法 9         //基本数据类型+""或者基本数据类型.toString(基本数据类型值);10         11         //字符串转换成基本数据类型12         //基本数据类型  变量=基本数据类型.parse基本数据类型(String);13         //parseInt14         15         //十进制转化为其它进制16         //toBinaryString();toHexString();toOctalString();17         //其它进制转化为十进制18         //parseInt(进制数,进制);19         20         int num=Integer.parseInt("233");21         sop(num+4);22         boolean b=Boolean.parseBoolean("true");23         sop(b);24         25         //JDK1.5版本以后出现的新特性26         Integer x1=null;//新特性中x不可以为空,所以需要判断27         Integer x=2;  //x是引用数据类型,右边是对象。这叫自动装箱,右边等价于new Integer(4);28         x=x+2;  //右边的x+2中的x进行了自动的拆箱动作,从对象变成了int类型,和2进行加法运算,然后装箱赋给x29         30         Integer m=23;31         Integer n=23;32         sop(m==n);        //结果为false33         Integer p=128;34         Integer q=128;35         sop(p==q);        //结果为true,因为在新特性中p和q指向了同一个Integer对象,但数值在byte类型范围内时就不再开辟新空间36         37     }38     public static void sop(Object obj)39     {40         System.out.println(obj);41     }42 }

 

转载于:https://www.cnblogs.com/joeshine/p/4415291.html

你可能感兴趣的文章
面部识别技术使得公众的匿名性消失
查看>>
《数据科学:R语言实现》——2.8 获取Facebook数据
查看>>
锤子手机 Bootloader 被国内越狱团队盘古破解
查看>>
《TCP/IP路由技术(第一卷)(第二版)》一1.8 总结表:第1章命令总结
查看>>
《Linux设备驱动开发详解 A》一一3.2 Linux 2.6后的内核特点
查看>>
部署 Docker 前必须问自己的四个问题
查看>>
《UG NX10中文版完全自学手册》——1.5 文件操作
查看>>
《Android 3D游戏开发技术宝典——OpenGL ES 2.0》——2.6节Socket网络通信
查看>>
比特币的交易价格节节攀升,发展势头却比以太坊弱?
查看>>
未来 5 年有颠覆性的 IT 技术都在这里
查看>>
《CCNP TSHOOT 300-135学习指南》——1.5节复习题
查看>>
《UVM实战》——2.2节只有driver的验证平台
查看>>
《威胁建模:设计和交付更安全的软件》——3.7 权限提升威胁
查看>>
【源资讯 第31期】科技界大招不断,程序员要约会还是要工作?
查看>>
《Oracle高性能自动化运维》一一1.4 Linux内存体系与Oracle内存空间
查看>>
《HTML5移动应用开发入门经典》—— 第1章 使用HTML5改进移动Web应用的开发
查看>>
自己动手构造编译系统:编译、汇编与链接1.1 从编程聊起
查看>>
Guava 是个风火轮之基础工具(2)
查看>>
《TensorFlow技术解析与实战》——1.3 深度学习的入门方法
查看>>
《数据分析变革:大数据时代精准决策之道》一2.1 穿越炒作的迷雾
查看>>