`
wtt2312
  • 浏览: 14830 次
  • 性别: Icon_minigender_2
最近访客 更多访客>>
社区版块
存档分类
最新评论

黑马程序员---String、StringBuffer、StringBuilder

阅读更多
-------http://www.itheima.comjava培训、android培训期待与您交流!-------


一、java API
1、String
  String是一个类,且不能有子类(被final修饰),不可复写其功能。
字符串是一个特殊的对象,字符串一旦初始化就不能被改变。
(1)String s1 = “abc”; s1是类类型变量,一定指向abc对象。若s1=”kk”;s1只是指向了kk,而s1未变。
   String s2 = new String(“abc”); s2在堆内存中有两个对象。
此时,s1==s2;是错的,比较的是对象的地址。
s1.equals(s2);是正确的,比较的是对象中的内容。
(2)字符串的操作
A、获取
              
 String s1 = "wangtingting";
		//获得字符串的长度(字符串中包含的字符数)
		int x = s1.length();
		//根据字符串的索引(位置)获取该位置的字符
		char ch1 = s1.charAt(3);
		//根据字符获取某个字符在该字符串中的位置(返回的是该字符第一次出现的位置)
		int i1 = s1.indexOf('a');
		//获取从指定位置开始,该字符在字符串出现的位置
		int i2= s1.indexOf('i', 6);
		//i字符在该字符串中第一次出现的位置
		int i3 = s1.indexOf('i');
		//n字符串在该字符串中第一次出现的位置
		int i4 = s1.indexOf("n");

		//可以索引该字符串第一次在整个字符串出现的位置,如果返回-1,则该字符串p不在整个字符串中存在
		//也可用于对指定字符串判断是否存在
		int i7 = s1.indexOf("p");

		//n该字符串从指定位置(索引3)开始,在字符串中出现的位置(且是该字符串在指定位置后的第一次出现的位置)
		int i5 = s1.indexOf("n",3);
		//该字符在整个字符串中最后出现的位置
		int i6 = s1.lastIndexOf('i');
		System.out.println(i7);

B、判断
       
String s2 = "wangtingting";
		//字符串中是否包含某一字串
		boolean b1 = s2.contains("ting");
		//判断字符串是否为空(字符串长度是否为0)
		boolean b2 = s2.isEmpty();
		//判断该字符串是否是以字符串ti开头
		boolean b3 = s2.startsWith("ti");
		boolean b4 = s2.endsWith("ng");
		//判断给出的字符串是否和s字符串相同
		boolean b5 = s2.equals("wangtingting");
		//判断给出的字符串是否和s字符串的内容相同,并忽略大小写
		boolean b6 = s2.equalsIgnoreCase("Wangtingting");
		System.out.println(b6);

C、转换
char[] arr = {'e','f','h','l','m','o','r','y'};
		//使用构造函数的方法将字符数组转换成字符串
		String str1 = new String(arr);
		//将字符数组中的一部分转换成字符串。 起始位 转换的个数
		//String(char[] value, int offset, int count)
		String str2 = new String(arr,3,4);
		
		//str2 =arr.copyValueOf(arr);
		System.out.println(str2);

		//将字符串转成字符数组
		byte[] bt = {'g','r','z','y','j','m'};
		String str3 = new String(bt);
		System.out.println(str3.toCharArray());


D、切割和替换
 public static void splitAndReplace()
	{
		//替换
		String str3 = new String("wangting");
		//用新字符串替代原字符串中的内容
		//若替换的字符串不存在,则返回原字符串"你好"
		System.out.println(str3.replace("ting","shan"));
		

		//以,将字符串切割
		String stri = "wangwu,lisi,zhangsan";
		String[] arr1 = stri.split(",");
		for (int x = 0;x<arr1.length ;x++ )
		{
			System.out.println(arr1[x]);
		}

		//默认获得的是从位置3(包含3)开始以后的子串
		System.out.println(str3.substring(3));
		//获取的是包含头4不包含尾7的子串
		System.out.println(str3.substring(4,7));


		//将字符串转换为大小写
		String str4 = new String("WANGSHAN");
		System.out.println(str3.toUpperCase());
		System.out.println(str4.toLowerCase());

		//将字符串中的空格去除
		String str5 = new String("   WANGSHAN      ");
		System.out.println(str5.trim());

		//对两个字符串进行自然顺序比较
		int num = str4.compareTo("hellowangting");
		System.out.println(num);
	}


2、StringBuffer 字符串缓冲区,相当于一个容器,用于存储字符串该字符串缓冲区的 长度可以变化/可操作多个数据类型/最终会通过toString方法转变成字符串。
(1)添加
  
StringBuffer sb = new StringBuffer("wangtingting");
  		//在已有字符串的末端添加内容
  		System.out.println(sb.append("你好"));
  		System.out.println(sb.append(true).append(123));
  		//sb和sb1指向的是同一个对象
  		StringBuffer sb1 = new StringBuffer("wangtingting");
  		System.out.println(sb==sb1);

(2)删除
  
//删除从start到end之间的字符,包含头,不包含尾
  		StringBuffer sb2 = sb.delete(4,8);
  		//删除指定位置的字符串
  		StringBuffer sb3= sb.deleteCharAt(1);
  		//清空缓冲区
  		StringBuffer sb4 = sb.delete(0,sb.length());
  		//获取4位置上的字符
  		char ch2  = sb.charAt(4);
  		System.out.println(ch2);

(3)修改
  
StringBuffer sb0 = new StringBuffer("wangtingting");
  		//在1位置上插入hello这个字符串
  		System.out.println(sb0.insert(1,"hello"));
  		//将字符串ting替换成字符串shan 包含头,不包含尾
  		System.out.println(sb0.replace(8,12,"shan"));
  		将字符串中的某个字符替换
  		sb0.setCharAt(1,'o');
  		System.out.println(sb0.toString());//或直接打印sb0

(4)反转
   将整个字符串反转
   System.out.println(sb0.reverse());
(5)将缓冲区中的指定数据存储到指定字符组中
  
//void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)  
  		StringBuffer strb = new StringBuffer("wangshan");
  		char[] chs = new char[5];
  		strb.getChars(4,8,chs,1);
  		for (int x = 0;x<chs.length ;x++ ){
  	System.out.println("char["+x+"]="+chs[x]+";");
  		}

3、StringBuilder
  StringBuilder也是字符串缓冲区,只是在JDK1.5版本之后出现的新特性。
  StringBuffer是线程同步的
  StringBuilder是线程不同步的
  升级原因:  提高效率、简化书写、提高安全性
基本数据类型对象包装
基本数据类型byte、short、int、long、boolean、float、double、char对应引用数据类型Byte、Short、Integer、Long、Boolean、Float、Double、Character
将数据类型对象包装的作用:用于基本数据类型和字符串之间做转换。
基本数据类型-->字符串
        System.out.println(3+" ");
System.out.println(Integer.toString(3));
字符串-->基本数据类型
  int num = Integer.parseInt("123");
boolean b = Boolean.parseBoolean("true");
Integer i = new Integer("123"); //打印结果 123
int num2 = i.valueOf("123"); //123
System.out.println(num2);
十进制-->其他进制
              System.out.println(Integer.toBinaryString(-6));
System.out.println(Integer.toHexString(60));
System.out.println(Integer.toOctalString(8));
其他进制-->十进制
             //将110转换成十进制、二进制、八进制的数
System.out.println(Integer.parseInt("110",10));
System.out.println(Integer.parseInt("110",2));
System.out.println(Integer.parseInt("110",8));
基本数据类型新特性
(1)
              Integer x = new Integer("123");
   Integer y = new Integer(123);
   System.out.println(x==y); //false
   System.out.println(x.equals(y));//true
  x和y的地址值不同,
  但x和y指向的内容相同。
(2)
   Integer x1= 4;
   System.out.println(x1+2);
  自动装箱:x1代表的是一个对象,是引用数据类型,由于自动装箱功能,x1可以直接这样写。
  自动拆箱:x1+2 ,将类类型变量直接作为值进行运算。



----------http://www.itheima.comjava培训、android培训期待与您交流! ----------

分享到:
评论

相关推荐

    黑马程序员入学面试题

    String、StringBuffer和StringBuilder - `String`:不可变字符串,适合频繁比较字符串。 - `StringBuffer`:线程安全的可变字符串,适合多线程环境下的字符串操作。 - `StringBuilder`:非线程安全的可变字符串,...

    黑马程序员入学Java精华总结

    ### 黑马程序员入学Java精华总结 #### 一、Java概述与基础知识 1. **何为编程?** - 编程是指通过编写计算机能够理解的指令来解决问题或完成特定任务的过程。这些指令通常被组织成算法,并使用某种编程语言实现。...

    黑马程序员_(适合初学者入门的Java基础视频)

    7. **字符串处理**:详细解析String类,包括字符串的创建、操作和比较,以及StringBuilder和StringBuffer的使用。 8. **多线程**:介绍线程的概念,讲解如何创建和控制线程,以及同步机制,如synchronized关键字和...

    黑马程序员入学Java知识(精华总结)

    ### 黑马程序员入学Java知识(精华总结) #### 一、Java概述与基础知识 ##### 1、何为编程? 编程是指使用计算机语言来编写指令,这些指令被计算机执行以完成特定任务的过程。通过编程,我们可以控制计算机的行为...

    黑马程序员Java面试宝典2019最新

    综上所述,黑马程序员Java面试宝典2019最新版本为应聘者提供了一整套全面的Java面试知识点,详细解释了包括面向对象编程、Java基础语法、多态性、异常处理、常用API以及数据类型在内的多个重要领域。通过学习这些...

    黑马程序员入学Java知识

    ### 黑马程序员入学Java知识 #### Java概述与基础知识 1. **何为编程?** - 编程是通过特定的计算机语言来编写指令,让计算机能够执行一系列任务的过程。 2. **Java语言概述,历史、特点** - Java是一种广泛...

    黑马程序员《Java自学宝典》源代码

    4. **字符串处理**:掌握String类的基本用法,包括字符串的创建、比较、拼接、查找、替换等操作,以及StringBuilder和StringBuffer类的使用。 5. **异常处理**:理解Java中的异常分类,如检查性异常和运行时异常,...

    Java基础案例教程.rar

    6. **字符串处理**:学习String类的常用方法,包括字符串拼接、查找、替换、分割等操作,以及StringBuilder和StringBuffer的使用。 7. **输入/输出流**:学习Java I/O流的概念,包括文件操作、字符流和字节流的使用...

    java学科面试宝典v7.0.pdf

    1.2 String、StringBuffer和StringBuilder的区别: - String:由于String类的对象是用final修饰的char数组存储,且被声明为private和final,所以是不可变的。每次对String对象进行改变时,都会生成新的对象并改变...

    Java程序员面试宝典5.pdf

    4. **String、StringBuilder、StringBuffer的区别**: - `String`是不可变的,`StringBuilder`和`StringBuffer`都是可变的字符串。 - `StringBuffer`对方法加了同步锁,适用于多线程环境;`StringBuilder`没有同步...

    毕向东13字符串01

    它们是通过`String`类或`StringBuilder`/`StringBuffer`类来创建和操作的。字符串对象可以通过字面量(如`"hello"`)或者构造函数(如`new String("hello")`)来创建。字符串在内存中的存储通常涉及常量池,字符串...

    Java字符串连接原理

    本文主要参考黑马程序员的Java面试宝典上的内容 我们都知道,在Java中字符串可以用+连接,也可以使用StringBuilder或StringBuffer连接。 String str = abc+xyz; 那么这几种方式由什么区别呢。当然你可能会知道以下...

    最新版Java程序员面试宝典。

    - String是不可变的,而StringBuilder和StringBuffer是可变的字符串。 - 在循环体内,使用StringBuilder或StringBuffer比使用"+"进行字符串连接更高效。 以上这些知识点都是Java程序员在面试中常常遇到的问题,...

    JAVA面试宝典

    《JAVA面试宝典》是程序员在应聘时的重要参考资料,它由黑马程序员精心制作,涵盖了面试中经常遇到的技术问题和知识点,为求职者提供了系统的复习指南。这份宝典不仅包括Java基础知识点,还涉及了面向对象、JavaSE...

    笔记_笔记_

    【描述】:“这份JAVA笔记详尽记录了黑马程序员线下课程的基础语言部分,涵盖了JAVA编程的核心概念和技术。” 【知识点详解】 1. **JAVA语言基础** - 变量与数据类型:JAVA支持基本数据类型(如int, double, char...

    毕向东静态06

    在"黑马程序员_毕向东_Java基础视频教程第06天-09-面向对象(单例设计模式).avi" 这个文件中,毕向东老师可能会详细讲解以下内容: 1. **字符串基础**: - 字符串对象的创建:通过`new String()`或字面量`"abc"`。 ...

    字符串1302

    在Java编程语言中,字符串(String)是一个至关重要的概念,它被广泛用于数据...在观看“黑马程序员_毕向东_Java基础视频教程第13天-02-String(常见功能-获取和判断).avi”时,建议结合实例进行练习,加深理解和记忆。

Global site tag (gtag.js) - Google Analytics