黑马程序员----java基础:String与StringBuffer及基本数据类型包装类

    java中一些基础类比如String、StringBuffer和基本数据类型包装类都是非常常见且使用非常频繁的类。这些类虽然简单,但是想要熟练使用也必须要学习,虽然API文档对这些类的用法都讲的比较详细,但是我觉得还是有必要再整理一下。

一、String类

1、概述

String就是字符串的意思,首先要明确一点的是String并不属于基本数据类型。

因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。

注意new String() 和 newString("")都是声明一个空的字符串而不是null。

字符串一旦被初始化就不可以被改变。

2、初始化

对象初始化格式String s = new String("abc"); 

----可以简写为String  s = "abc";

3、字符串常量池

讲之前首先我们先来看一个例子

//例1    String s1 = “abc";
    String s2 = "abc";
    String s3 = "a" + "bc";
    System.out.println(s1 == s2); // true
    System.out.println(s1 == s3);// true  
//例2       String s1 = new String("abc");   String s2 = new String("abc");
   String s3 = "a" + new String("bc");
   System.out.println(s1==s2);        //false
   System.out.println(s2==s3);        //false

  运行这个2个例子的结果,我们会惊奇的发现例1和例2运行的结果竟然不同。上面不是说用new和不用new是一样的吗?

这里我们就要引入常量池的概念:常量池(constant pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口等中的常量,也包括字符串常量。

  Java会确保一个字符串常量只有一个拷贝。

  因为例子中的s1和s2中的”abc”都是字符串常量,它们在编译期就被确定了,所以s1==s2为true;

  用new String() 创建的字符串不是常量,不能在编译期就确定,所以new String() 创建的字符串不放入常量池中,它们有自己的地址空间。

4、常用方法

4.1、获取:

4.1.1 获取字符串中字符的个数(长度).

int length();

4.1.2 根据位置获取字符。

char charAt(int index);

4.1.3 根据字符获取在字符串中的第一次出现的位置.

int indexOf(int ch) ch为字符的Unicode编码

int indexOf(int ch,int fromIndex) 从指定位置进行ch的查找第一次出现位置

int indexOf(String str)根据字符串获取在字符串中的第一次出现的位置.

int indexOf(String str,int fromIndex)从fromIndex指定位置开始,获取str在字符串中出现的位置.

4.1.31反向索引,从后向前查找

int lastIndexOf(int ch)

int lastIndexOf(int ch,int fromIndex):从指定位置进行ch的查找第一次出现位置

int lastIndexOf(String str);

int lastIndexOf(String str,int fromIndex);

4.1.4 获取字符串子串。

String substring(int beginIndex, int endIndex)//包含begin 不包含end 。

String substring(int beginIndex);//从beiginIndex索引开始截取字符串。

4.2、转换

4.2.1 将字符串变成字符串数组

String[]  split(String regex):涉及到正则表达式.

4.2.2 将字符串变成字符数组。

char[] toCharArray();

4.2.3 将字符串变成字节数组。

byte[] getBytes();

4.2.4 将字符串中的字母转成大小写。

String toUpperCase():大写

String toLowerCase():小写

 4.2.5将字符串中的内容进行替换

 String replace(char oldch,char newch);

String replace(String s1,String s2);

2.6 将字符串两端的空格去除。

String trim();

2.7 将字符串进行连接 。

String concat(string);

4.3、判断比较

4.3.1 两个字符串内容是否相同啊?

boolean equals(Object obj);

boolean equalsIgnoreCase(string str);忽略大写比较字符串内容。

4.3.2 字符串中是否包含指定字符串?

boolean contains(string str);

4.3.3 字符串是否以指定字符串开头。是否以指定字符串结尾。

boolean startsWith(string);

boolean endsWith(string);

二、StringBuffer类

1、概述

StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类。

所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入、删除等操作,使用StringBuffer要更加适合一些。

在StringBuffer类中存在很多和String类一样的方法,这些方法在功能上和String类中的功能是完全一样的。

但是有一个最显著的区别在于,对于StringBuffer对象的每次修改都会改变对象自身,这点是和String类最大的区别。

2、StirngBuffer初始化

  StringBuffer对象的初始化不像String类的初始化一样,Java提供的有特殊的语法,而通常情况下一般使用构造方法进行初始化。

 StringBuffer s = new StringBuffer();
 StringBuffer s = new StringBuffer(”abc“);

3、特点  

a、长度的可变的。
   b、可以存储不同类型数据。
   c、最终要转成字符串进行使用。
   d、可以对字符串进行修改。

4、常用方法

4.1添加:

StringBuffer append(data);//能够添加各种数据类型

StringBuffer insert(index,data); //在索引出插入各种类型

4.2删除:

StringBuffer delete(start,end):包含头,不包含尾。

StringBuffer deleteCharAt(int index):删除指定位置的元素

4.3查找:

char charAt(index); //在该索引出的char值

  int codePointAt //索引处的字符

int indexOf(string); //

int lastIndexOf(string);

 int capacity() //返回当前Buffer的容量(初始16)

 int length()  //长度

4.4修改:

StringBuffer replace(start,end,string);

  void setCharAt(index,char);

  StringBuffer reverse() 将此字符序列用其反转形式取代(String类中没有反转)

  void trimToSize()  尝试减少用于字符序列的存储空间。

5、StringBuilder

jdk1.5以后出现了功能和StringBuffer一模一样的对象。就是StringBuilder

这里就不详细介绍了。注意一下它们的不同点就好了。

不同的是:

StringBuffer是线程同步的。通常用于多线程。

StringBuilder是线程不同步的。通常用于单线程。 它的出现提高效率。。

三、基本数据类型包装类

1、概述

Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类。

2、对应关系

byte ——Byte

short ——Short

int ——Integer

long-----Long

float-----Float

double----Double

char----Character

boolean---Boolean

3、Integer类内部的常用方法

事实上这几种数据类型包装内是比较相似,我只以Integer为例简单介绍一下。

a、parseInt方法

        //将数字字符串转换为int数值。
        String s = “123”;
        int n = Integer.parseInt(s);

         //将字符串”120”按照十进制转换为int,则结果为120
         int n = Integer.parseInt(“120”,10);

         //将字符串”12”按照十六进制转换为int,则结果为18
         int n = Integer.parseInt(“12”,16);

         //将字符串”ff”按照十六进制转换为int,则结果为255
         int n = Integer.parseInt(“ff”,16);
    

b、int转字符串

  可以直接用+号连接,也可以用toString函数。

   //将int类型转换为对应的String类型。
    int m = 1000;
    String s = Integer.toString(m);

 c、十进制转成其他进制。

toBinaryString();

toHexString();

toOctalString();

四、最后

即使是简单的东西,我们也要把它重视起来,坚持每天进步一点点,最后我们就是成功的。

时间: 11-23

黑马程序员----java基础:String与StringBuffer及基本数据类型包装类的相关文章

黑马程序员-Java基础---String、StringBuffer、StringBuilder、包装类

第一讲概述 1.  字符串是一个特殊的对象,它一旦被初始化,就不可以被改变,不能有子类,所以String中的方法都不能被复写: 2.  字符串有两种赋值方式 1)  String s1 = “abc”;  ——在内存中只有一个对对象. 2)  String s2 = new String(“abc”):——在内存中有两个对象,”abc”是一个对象,new又创建了一个对象. 3.  equals方法 Object中的equals方法是用于比较两个对象的地址的,String类中重写了该方法,使得其比

黑马程序员----java基础--String字符串

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.String类概述 java中用String类进行描述对字符串进行了对象的封装.这样的好处是可以对字符串这种常见数据进行方便的操作.对象封装后,可以定义N多属性和行为. String类是final的,也就是说它没有子类. 二.String字符串的特点 1.字符串一旦被初始化就不可以被改变.并且存放在方法区中的常量池中. 1 class StringDemo{ 2 public static

黑马程序员-java基础-String类

1.概述 String 类适用于描述字符串事务.提供了多种对字符串进行操作的方法. > 字符串的最大的特点:一旦被初始化就不能被改变. 2.常见的操作方法: 2.1 获取: 1 public class StringText1 { 2 public static void main(String srgs[]) 3 { 4 // str 是一个类类型变量,"abc"是一个对象. 5 String str = "hello java!" ; 6 // str 和

黑马程序员——Java基础---String类

--Java培训.Android培训.iOS培训.UI培训.PHP培训.期待与您交流! -- Scanner的概述和方法介绍 1.Scanner类的构造方法 Scanner(InputStream source) 2. 一般方法 hasNextXxx() 判断是否还有下一个输入项,其中Xxx可以是Int,Double等.如果需要判断是否包含下一个字符串,则可以省略Xxx package com.geekds.scanner; import java.util.Scanner; public cl

黑马程序员——Java基础---String与StringBuilder

String类    一.特点 String是字符串的类类型,用于描述字符串事物.字符串是一个特殊的对象并且因为String对象特别常用,所以在对String对象进行初始化时,Java提供了一种简化的特殊语法,例如:String s=”123”.以及String s=123+””; 字符串最大的特点就是:一旦被初始化就不可以被改变. 例: String s1=“abc”: String s2 = new String(“abc”): String s3=“abc”: 比较的结果: s1==s2

黑马程序员——java基础——反射

 黑马程序员--java基础--反射 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 反射 其实就是动态加载一个指定的类,并获取该类中的所有的内容.而且将字节码文件封装成对象,并将字节码文件中的内容都封装成对象,这样便于操作这些成员. 反射就是把Java类中的各种成分映射成相应的java类. 简单说:反射技术可以对一个类进行解剖. 反射的基石-->Class类 1.java中的类是用来描述一类事物的共性,该类事物有什么属性,没有什么属性

黑马程序员_Java基础String类

- - - - - android培训.java培训.期待与您交流! - - - - - - - String是一个对象 String不属于8种基本数据类型(byte, char, short, int, float, long, double, boolean),String是对象,所以其默认值是null. String是一种特殊的对象,有其它对象没有的一些特性,通过JDK发现: public final class String implements java.io.Serializable

黑马程序员——Java基础---IO(下)

黑马程序员——Java基础---IO(下) ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------ 一.概述 Java除了基本的字节流.字符流之外,还提供了File类.properties类.打印流.序列流等和输入输出相关的类,它们能够帮助我们更好的处理信息.下面将对它们进行简单的介绍. 一.正

黑马程序员——Java基础---集合框架工具类

黑马程序员——Java基础<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------ 一.概述 Java为操作Set.List和Map提供了一系列工具类,主要有Collections和Arrays.这两个工具类的特点:类中的方法都是静态的,不需要创建对象,直接使用类名调用即可.Collections:是集合对象

黑马程序员——java基础——多线程

 黑马程序员--java基础--多线程 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 进程:是一个正在执行中的程序.每一个进程执行都有一个执行顺序.该顺序是一个执行路径,或者叫一个控制单元. 线程:就是进程中的一个独立的控制单元.线程在控制着进程的执行.一个进程中至少有一个线程. 一个进程至少有一个线程在运行,当一个进程中出现多个线程时,就称这个应用程序是多线程应用程序,每个线程在栈区中都有自己的执行空间,自己的方法区.自己的变量.