String类

String类的初始化

String是一个特殊的对象,一旦被初始化,就不会被改变



1、使用字符串常量直接初始化一个String对象


String  s1="abc";

// s1是一个类类型变量,“abc”是一个对象。


2、使用String的构造方法初始化字符串对象


String  s2=new String("abc");



s1和s2的区别:


s1在字符串常量池中创建了一个abc字符串

s2在堆中创建了两个对象一个是默认对象一个是字符串对象



==和equals的区别:


==比较的是地址equals比较的是内容




String类的常见操作

获取


获取字符串长度 int length();

根据位置获取字符 char charAt(int index);



根据字符获取在字符中的位置


int indexof(int ch) 返回的是ch在字符串中第一个出现的位置

int indexof(int ch,int FromIndex) 从fromIndex指定位置开始,获取ch在字符串中出现的位置


int indexof(String str); 返回的是str在字符串中第一个出现的位置

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



反向索引一个字符出现的位置。


int lastindexof(int ch) 


int lastindexof(int ch,int FromIndex) 从fromIndex


int lastindexof(String str); 


int lastindexof(String str,int FromIndex) 




获取字符串中的一部分字符串,也叫子串。  


String subString(int beginindex,int endindex);

String subString(int beginindex);



判断


两个字符串是否相同


equals(Object obj)

equalsIgnoreCase(String str)


字符串中是否包含某个字符串contains(String str)



两个字符串是否以指定字符串开头或结尾


boolean Startswith(String);

boolean endswith(String);

字符串是否为空    boolean isEmpty(); 




字符串转换


将字符串变成字符串数组String[] split(String regex);

将字符串变成字符数组char[] toCharArray();

将字符串变成字节数组byte[] getBytes();



将字符串数组变成字符串

        构造函数 String(char[])


              String(char[],offset,count)   将字符数组中的一部分转成字符串。


        静态函数 static String copyValueof(char[])


                  static String copyValueof(char[],offset,count)   将字符数组中的一部分转成字符串。



将字符串的字母大小写转换

String toUppercase();大写

String toUppercase();小写



将字符串的内容替换

String repalce(char oldch,char newch);


String repalce(String s1,String s2);



将字符串两端空格去掉    String trim();

将字符串进行连接    String concat(String);



比较


compareTo();    小返回负数 等返回0 大返回正数



StringBuffer类


是个字符串缓冲区对象,用于存储数据的容器

StringBuffer类似一个字符容器,当在其中添加或删除字符时,并不会产生新的StringBuffer对象



特点


1.长度是可变的

2.可以存储不同类型数据

3.最终要转换成字符串使用

4.可以对字符串进行修改





功能


1.添加

    append(data)  将指定数据添加到已有数据的结尾处


    insert(位置,字符串)   将数据插入到指定位置


2.删除

    delete(start,end);

    删除缓冲区中的数据,包含start不包含end


    deleteCharAt(ine index);    

删除指定位置元素


    StringBuffer.delete(0,sb.length());


3.查找

    char charAt(index);


    int indexof(string);


    int lastindexof(String);


4.修改 

    StringBuffer  replace(start,end.String)


    void  setCharAt(index,char)


    setlength()    设置长度


5.反转

    StringBuffer reverse();


6.将缓冲区中的指定数据存储到字符数组中

    void getChars(int srcBegin,int srcEnd,char[] dst,int dstbegin)


    StringBuilder    线程不同步的,StringBuffer是同步的。建议使用StringBuilder效率快。




String类和StringBuffer类的区别


1、String类表示的字符串是常量,一旦创建后,内容和长度都是无法改变的。StringBuffer表示字符容器,其内容和长度都可以随时修改。在操作字符串时,如果该字符串仅用于表示数据类型,则使用String类即可,但是如果需要对字符串中的字符进行增删操作,则使用StringBuffer类


2、String类覆盖了Object类的equals()方法,而StringBuffer类没有覆盖Object类的equals()方法


3、String类对象可以用操作符“+”进行连接,而StringBuffer类对象之间不能






System类


是hashtable 的子类。用map的方法去除该类集合中的元素。该集合中存储的都是字符串,没有泛型定义


String calue=(String)prop.get(obj);


System.out.println(obj+":"+value);




在系统中自定义一些特有信息


System.setProperty("mykey","myvalue");


System类定义了一些与系统相关的属性和方法,它所提供的属性和方法都是静态的,因此,想要引用这些属性和方法,直接使用System类调用即可。


preperties();获取当前系统的全部信息,会返回一个Properties对象,以键值对存在

Properties prop =new System.getProperties();


currentTimeMillis();当前时间,该方法返回一个long类型的值,该值表示当前时间与1970年1月1日0点0分0秒之间的时间差,单位是毫秒,习惯性地被称作时间戳



arraycopy(Object src,int srcPos,Object dest,int destPos,int length)

arraycopy()方法用于将一个数组中的元素快速拷贝到另一个数组。其中的参数具体作用如下:


src:表示源数组


dest:表示目标数组


srcPos:表示源数组中拷贝元素的起始位置


destPos:表示拷贝到目标数组的起始位置


length:表示拷贝元素的个数


需要注意的是,在进行数组复制时,目标数组必须有足够的空间来存放拷贝的元素,否则会发生角标越界异常




Runtime类


static Runtime getRuntime();


process p= r.exec("*.exe")      //执行文件


p.destory();        

//杀掉进程。


使用了单例设计模式



Runtime类用于表示虚拟机运行时的状态,它用于封装JVM虚拟机进程。每次使用java命令启动虚拟机都对应一个Runtime实例,并且只有一个实例,因此该类采用单例模式进行设计,对象不可以直接实例化。若想在程序中获得一个Runtime实例,只能通过以下方式:


Runtime run = Runtime.getRuntime();


由于Runtime类封装了虚拟机进程,因此,在程序中通常会通过该类的实例对象来获取当前虚拟机的相关信息。




Math类

Math类是数学操作类,提供了一系列用于数学运算的静态方法,包括求绝对值、三角函数等。Math类中有两个静态常量PI和E,分别代表数学常量π和e。


ceil();                  返回大于参数的最小整数


floor();               

返回小于参数的最大整数


round();           

返回四舍五入


pow(a,b);       

a的b次方


random();

       大于等于0.0且小于1.0的伪随机double值




Random类


它可以在指定的取值范围内随机产生数字

Random类提供了更多的方法来生成各种伪随机数,不仅可以生成整数类型的随机数,还可以生成浮点类型的随机数




包装类


基本数据类型     引用数据类型


   byte                  Byte


   short                 Short


   int                     Integer


   long                  long


   float                  Float


   char                  Character


   boolean            Boolean


   double              Double




用于基本数据类型和字符串类型之间的转换

包装类和基本数据类型在进行转换时,引入了装箱和拆箱的概念,其中装箱是指将基本数据类型的值转为引用数据类型,反之,拆箱是指将引用数据类型的对象转为基本数据类型

基本数据类型转换成字符串 


基本数据类型+""


基本数据类型.toString(基本数据类型值)


字符串转换成基本数据类型


***.Parse***(***类型字符串);




进制转换


十进制--其他进制


toBinaryString();二进制


toOctolString();八进制


tohexString();十六进制 




其他进制--十进制


parseInt(string,进制);


注意


包装类都重写了Object类中的toString()方法,以字符串的形式返回被包装的基本数据类型的值。

除了Character外,包装类都有valueOf(String s)方法,可以根据String类型的参数创建包装类对象,但参数字符串s不能为null,而且字符串必须是可以解析为相应基本类型的数据,否则虽然编译通过,但运行时会报错。


除了Character外,包装类都有parseXXX(String s)的静态方法,将字符串转换为对应的基本类型的数据。




Data类


获取当前时间    Date date=new Date();


将模式封装到    SimpleDateformat对象中 自定义风格


SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日  hh:mm:ss");


调用format方法让模式格式化指定Date对象


String time=sdt.format(d);




Calendar类


Calendar类是一个抽象类,不可以被实例化,在程序中需要调用其静态方法getInstance()来得到一个Calendar对象,然后调用其相应的方法


        Calendar c = Calendar.getInstance();


        c.get(Calendar.Year);            

//获取年


        c.get(Calendar.Month);        

//获取月


        c.get(Calendar.DayofMonth);    

//获取日


        c.get(Calendar.DayofWeek);     

//获取星期


更改日期    c.add(Calendar.字段,12)


获取任意年的二月


        c.set(year,2,1)

//获取默认一年的三月1日


        c.add(Calendar.Day_of_Month,-1)




DateFormat类


DateFormat类专门用于将日期格式化为字符串或者将用特定格式显示的日期字符串转换成一个Date对象。


DateFormat是抽象类,不能被直接实例化,但它提供了静态方法,通过这些方法可以获取DateFormat类的实例对象,并调用其它相应的方法进行操作



DateFormat中还提供了一个parse(String source)方法,能够将一个字符串解析成Date对象,但是它要求字符串必须符合日期/时间的格式要求,否则会抛出异常。




SimpleDateFormat类


该类是DateFormat类的子类。SimpleDateFormat类可以使用new关键字创建实例对象,它的构造方法接收一个格式字符串参数,表示日期格式模板