Chapter 11 . 常用类

2018-10-04  本文已影响11人  GeekGray

阅读原文

Chapter 11 . 常用类

11.1字符串相关类

String类:构造字符串对象

常量对象:字符串常量对象是用双引号括起的字符序列。例如:"你好"、"12.97"、"boy"等。

字符串的字符使用Unicode字符编码,一个字符占两个字节

String类较常用构造方法:

 String  s1 = new String();

String  s2 = new String(String original);

String  s3 = new String(char[] a);

String  s4 =  new String(char[] a,int startIndex,int count)

String str  = “abc”;**与**String str1 = new String(“abc”);的区别?

字符串的特性

String是一个final类,代表不可变的字符序列

字符串是不可变的。一个字符串对象一旦被配置,其内容是不可变的。

字符串对象操作

public int length()

public char charAt(int index)

public boolean equals(Object anObject)

public int compareTo(String anotherString)

public int indexOf(String s)

public int indexOf(String s ,int startpoint)

public int lastIndexOf(String s)

public int lastIndexOf(String s ,int startpoint)

public boolean startsWith(String prefix)

public boolean endsWith(String suffix)

public boolean regionMatches(int firstStart,String other,int otherStart ,int length)

字符串对象修改

public String substring(int startpoint)

public String substring(int start,int end)

pubic String replace(char oldChar,char newChar)

public String replaceAll(String old,String new)

public String trim()

public String concat(String str)

public String[] split(String regex)

根据给定正则表达式的匹配拆分此字符串。

public static void main(String args[]) { 
    
String[] fakeFileData = {
    
"justin\t64/5/26\t0939002302\t5433343",
    
"momor\t68/7/23\t0939100391\t5432343" }; 
    
for(String data : fakeFileData) {
    
String[] tokens = data.split("\t");
    
//\t为字符串的分割符号。          
    
for(String token : tokens) {
    
System.out.print(token + "\t| ");}
    
ystem.out.println(); 
    
}} 

字符串与基本数据的相互转化

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

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

字符串与字符、字节数组(1)

字符串与字符数组

String类提供了将字符串存放到数组中的方法:

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

将字符串中的全部字符存放在一个字符数组中的方法:

public char[] toCharArray()                       

字符串与字符、字节数组(2)

字符串与字节数组


11.2 StringBuffer类

StringBuffer类有三个构造方法:

1.StringBuffer()初始容量为16的字符串缓冲区

2.StringBuffer(int size)构造指定容量的字符串缓冲区

3.StringBuffer(String str)将内容初始化为指定字符串内容


StringBuffer类的常用方法

StringBuffer append(String s),   StringBuffer append(int n) ,  

StringBuffer append(Object o) ,  StringBuffer append(char n),

StringBuffer append(long n),  StringBuffer append(boolean n),

StringBuffer insert(int index, String str) 

public StringBuffer reverse() 

StringBuffer delete(int startIndex, int endIndex) 

public char charAt(int n )

public void setCharAt(int n ,char ch)

StringBuffer replace( int startIndex ,int endIndex, String str) 

public int indexOf(String str)

public String substring(int start,int end)

public int length()

11.3 StringBuilder类

StringBuilder 和 StringBuffer 非常类似,均代表可变的字符序列,而且方法也一样

String使用陷阱:

string s="a"; //创建了一个字符串

s=s+"b"; //实际上原来的"a"字符串对象已经丢弃了,现在又产生了一个字符串s+"b"(也就是"ab")。如果多次执行这些改变串内容的操作,会导致大量副本字符串对象存留在内存中,降低效率。如果这样的操作放到循环中,会极大影响程序的性能。

三者的效率测试

String text = "";

long startTime = 0L;

long endTime = 0L;

StringBuffer buffer = new StringBuffer("");

StringBuilder builder = new StringBuilder("");

startTime = System.*currentTimeMillis();*

for(int i = 0;i<20000;i++){

buffer.append(String.*valueOf(i));*}

endTime = System.*currentTimeMillis();*

System.*out.println("StringBuffer**的执行时间:"+(endTime-startTime));*

startTime = System.*currentTimeMillis();*

for(int i = 0;i<20000;i++){

builder.append(String.*valueOf(i));*}

endTime = System.*currentTimeMillis();*

System.*out.println("StringBuilder**的执行时间:"+(endTime-startTime));*

startTime = System.*currentTimeMillis();*

for(int i = 0;i<20000;i++){

text = text + i;}

endTime = System.*currentTimeMillis();*

System.*out.println("String**的执行时间:"+(endTime-startTime));*

11.4日期类

1.java.lang.System类

System类提供的public static long currentTimeMillis()用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。

此方法适于计算时间差。

计算世界时间的主要标准有:

. java.util.Date****类

​ 表示特定的瞬间,精确到毫秒

构造方法:

常用方法

格式化:

解析:


java.util.Calendar(日历)类

​ Calendar是一个抽象基类,主用用于完成日期字段之间相互操作的功能。

获取Calendar实例的方法

一个Calendar的实例是系统时间的抽象表示,通过get(int field)方法来取得想要的时间信息。比如YEAR、MONTH、DAY_OF_WEEK、HOUR_OF_DAY 、MINUTE、SECOND

  public void set(int field,int value)

  public void add(int field,int amount)

  public final Date getTime()

  public final void setTime(Date date)

  Calendar calendar = Calendar.getInstance();

          // 从一个 Calendar 对象中获取 Date 对象

          Date date = calendar.getTime();

          //使用给定的 Date 设置此 Calendar 的时间

          calendar.setTime(date);

          calendar.set(Calendar.DAY_OF_MONTH, 8);

          System.out.println("当前时间日设置为8后,时间是:" +       

                                               calendar.getTime());

          calendar.add(Calendar.HOUR, 2);

          System.out.println("当前时间加2小时后,时间是:" +    

                                              calendar.getTime());

          calendar.add(Calendar.MONTH, -2);

          System.out.println("当前日期减2个月后,时间是:" + 

                                              calendar.getTime());

11.5Math类

java.lang.Math提供了一系列静态方法用于科学计算;其方法的参数和返回值类型一般为double型。

abs     绝对值

acos,asin,atan,cos,sin,tan  三角函数

sqrt     平方根

pow(double a,doble b)     a的b次幂

log    自然对数

exp    e为底指数

max(double a,double b)

min(double a,double b)

random()      返回0.0到1.0的随机数

long round(double a)     double型数据a转换为long型(四舍五入)

toDegrees(double angrad)     弧度—>角度

toRadians(double angdeg)     角度—>弧度

11.6BigInteger类

Integer类作为int的包装类,能存储的最大整型值为 ,BigInteger类的数字范围较Integer类的数字范围要大得多,可以支持任意精度的整数。

构造器

BigInteger(String val)

常用方法


11.7 BigInteger类

一般的Float类和Double类可以用来做科学计算或工程计算,但在商业计算中,要求数字精度比较高,故用到java.math.BigDecimal类。BigDecimal类支持任何精度的定点数。

构造器

常用方法

  public void testBigInteger(){

  BigInteger bi = new BigInteger("12433241123");

  BigDecimal bd = new BigDecimal("12435.351");

  BigDecimal bd2 = new BigDecimal("11");

  System.out.println(bi);

  //System.out.println(bd.divide(bd2));

  System.out.println(bd.divide(bd2,BigDecimal.ROUND_HALF_UP));

  System.out.println(bd.divide(bd2,15,BigDecimal.ROUND_HALF_UP));

  }

上一篇下一篇

猜你喜欢

热点阅读