黑马程序员——第四章 JavaAPI之常用类

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------


Object类

java.lang.Object

Object类是Java中所有类的父类,一切类都直接或者间接继承Object类。

native本地,这是一个用C/C++编写的本地方法,运行在本地方法栈。

 

常见方法

1,Object类方法 toString

public String toString():对象描述

 

 public String toString(){

   return getClass()+"@"+Integer.toHexString(hashCode());

  }

int hashCode()是Object类自己的方法,运行结果是一个十进制数的哈希值。

toHexString(十进制) 计算结果就是十六进制。

建议Object子类重写Object类的toString()方法,建立自定义的对象字符串

重写的依据:成员变量,做到将类中所有的成员变量连接变成字符串,返回此字符串。

System.out.println(a)实际是System.out.println(a.toString( ))

 

2,Object类方法 finalize

JVM启动垃圾回收器前调用这个方法。

 

3,public boolean equals(Object obj) {}

 java认为,所有的对象,都具备比较性,因此Object中,定义了一个比较对象的方法equals。

  重写equals方法,建立对象的自己的比较方式,不比较内存地址,比较的是对象的成员变量的值。

  重写的依据就是类的成员变量。

==equals的区别:

==比较基本数据类型,比较具体数值是否相等。

== 两边是引用数据类型,比较的是两个对象的内存真实地址。

equals默认情况下,比较的是两个对象的真实地址。

 

String类

java.lang.String

 

String类的定义方法

第一种: String s= "abc",创建一个对象 s直接指向对象"abc"。

第二种: String s1= new String("abc"),使用的是String类的构造器,创建两个对象,对象"abc",对象 new String(),变量s1指向的是newString() 。

 

字符串的特点

实际:publicfinal class String s = “abc”;字符串实际是加final的字符数组。

特点一:不需要new 的对象,直接写双引号,就表示一个字符串对象。

特点二:String前面实际有final修饰,所以字符串是常量,一旦创建,不能改变。

输出字符串的时候,其实输出的就是那个字符数组,但是输出语句println对字符串数组直接遍历,所以看到的是每个字符,不是地址。

 

"" null的区别""是对象;null是常量,不占内存。

String类的构造方法

空参,byte[]转成Stringchar[]转成String

1,空参数构造,new String(),

 

2,byte[]转成String,new String(字节数组),查询ASCII编码表。

       例:byte[] b = {97,98,99};

              //将字节数组传递给String类的构造器

              String s = new String(b);//s = “abc”

 

3,byte[]一部分转成String,,new String(字节数组,int,int),第一个int是开始下标,第二个int是获取几个,注意的数组的长度,防止越界异常。

       例:byte[] b = {97,98,99,100,101,102};

              //将字节数组传递String构造器,从下标2开始转3个

              String s = new String(b,2,3);//s =“cde”

 

4,char[]转成String,new String(字符数组)

       例:char[] ch ={'n','v','q','3','w','a'};

              //将字符数组传递给String构造器

              String s = new String(ch);//s=“nvq3wa”

 

5,char[]一部分转成String,new String(字符数组,int,int) ,第一个int是开始下标,第二个int是获取几个,注意的数组的长度,防止越界异常。

   例:char[] ch ={'n','v','q','3','w','a'};

//将字符数组传递String构造器,从下标1开始转4个

              String s = new String(ch,1,4);//s=”vq3w”

 

String的判断方法 -- 都是布尔类型

equalsequalsIgnoreCaseisEmptystartsWithendsWith

1,判断两个字符串是否完全相等,重写Object类的equals,两个字符串完全相等,返回真,有一点不同,返回假,equals(Objectobj)。

例:String s1 = "hello";

              String s2 = newString("hello");

              boolean b = s1.equals(s2);//b=true

              String s3 = null;

              String s4 = null;//s3==s4

              b = s3.equals(s4);//空指针异常            

 

2,判断两个字符串是否相等,忽略大小写,equalsIgnoreCase(String s)。

       例:String s1 = "hello 汉字 world";

              String s2 = "hello 汉字 World";

              boolean b =s1.equalsIgnoreCase(s2);//b=true

 

3,判断一个字符串是不是空串"",isEmpty(), 开始于JDK1.6(包含)以后版本。

       例:String s = " ";

              boolean b = s.isEmpty();//b=false

 

4,判断一个字符串是否以另一个字符串开头,startsWith(String s)。

5,判断一个字符串是否以另一个字符串结尾,endsWith(String s),反向查找。

       例:String s = "Demo.java";

              boolean b =s.startsWith("Demo.java");//b=true

              b =s.endsWith(".java");//b=true

 

String类的获取方法

charAt indexOf lastIndexOf substringlength

1,指定下标,返回这个下标上的单个字符,charAt(int index),注意越界异常。

       例:String s = "howareyou";

              char ch = s.charAt(2);//ch=’w’

 

2,指定字符,找这个字符在字符串中第一次出现的下标,indexOf(char ch),如果没有找到,返回负数。

       例:String s ="howoldareyou";

              int i = s.indexOf('d');//i=5

 

3,指定字符,找这个字符在字符串中第一次出现的下标,indexOf(char ch,int formIndex),指定开始查找的位置索引。如果没有找到,返回负数;如果索引过大,不会报越界异常,而是返回负数;如果索引为负数,则索引默认为0开始查找。

    例:String s ="howoldareyou";

          int i= s.indexOf('o',5);//i=10

 

4,指定字符串,找字符串在另一个字符串中第一次出现的下标,indexOf(String s)。

5,指定字符串,找字符串在另一个字符串中第一次出现的下标,indexOf(String s,int fromIndex),指定开始查找的位置。如果没有找到,返回负数;如果索引过大,不会报越界异常,而是返回负数;如果索引为负数,则索引默认为0开始查找。

   例:String s ="howoldareyou";

              int i= s.indexOf("are");//i= 6          

              i = s.indexOf("are",7);//i= -1

 

6,指定字符,找这个字符在字符串最后一次出现的下标,lastIndexOf(char ch)反向索引,如果没找到,返回负数。

   例:String s ="howoldareyou";

              int i = s.lastIndexOf('o');//i=10

 

7,指定字符,找这个字符在字符串最后一次出现的下标,lastIndexOf(char ch,int fromIndex),反向索引,指定开始查找的位置。

       例:String s ="howoldareyou";

              int i = s.lastIndexOf('o',5);//i=3

 

8,lastIndexOf(String s) 

9,lastIndexOf(String s,int formIndex)

10,获取字符串中的字符个数:length()

11,获取(截取)字符串的一部分,substring(int start, intend)返回新的字符串,原始不变,包含头,不包含尾。

       例:String s ="abcdefghijk";

              s = s.substring(0, 5);//s=”abcdef”

 

12,获取字符串的一部分,substring(int start)返回新的字符串,从开始下标计算,后面的全要。

       例:String s = "haqapafa";

              s = s.substring(2);//s=”qapafa”

 

String类的转换方法

getBytestoCharArraytoLowerCasetoUpperCaseconcat

1,将字符串转成字节数组,返回字节数组getBytes(),查询ASCII表。

       例:String s = "abc";

              byte[] b = s.getBytes();//b={97,98,99}

 

2,将字符串转成字符数组,返回字符数组toCharArray(),不查询ASCII表。

       例:String s = "to China";

              char[] ch = s.toCharArray();//ch={‘t’,’o’,’’,’C’,’h’,’i’,’n’,’a’}

 

3,将字符串全部转成大写字符,返回新字符串,toUpperCase()。

4,将字符串全部转成小写字符,返回新字符串,toLowerCase()。

   例:String upper = "AbcHK";

              upper = upper.toUpperCase();//upper=”ABCHK”

              String lower = "BG6T汉字HwaK@H";

              lower = lower.toLowerCase();//lower=”bg6t汉字hwak@h”

      

5,字符串的追加方法返回新字符串 concat(String s)

   例:String s = "abc";

              s = s.concat("fg");//s=”abcfg”

      

String类的其他方法

containsvalueOfsplitreplacecompareTotrim

1,一个字符串是否包含另一个字符串,contains(String s),完全包含返回真。

   例:String s = "abcdefg";

              //传递的是接口CharSequence 的实现类对象 String

              boolean b =s.contains("cd");//b=ture

 

2,将其他数据类型转成字符串 static String valueOf(任意类型)。

       例:int x = 10;

              String s = String.valueOf(x);//s=”10”

 

3,切割字符串 String[] split("切割规则"),返回新的字符串数组.如果规则不满足,原始字符串直接装进新的数组的0下标。.在正则中匹配任意字符。          

例:String s = "192.168.3.199";

              //正则中,\\表示一个\

              String[] str =s.split("\\.");//str={“192”,”168”,”3”,”199”}

 

4,替换字符串,返回新的字符串 String replace(老char,新char)。

5,替换字符串,返回新的字符串 String replace(老串,新串)。

   例:String s = "good bye";

              s = s.replace('d', 'Q');  //s=”gooQ bye”

              String str = "how do you do";

              str = str.replace("do","while");//str=”how while you while”

 

6,安照字典顺序比较两个字符串 int compareTo(String s),比较有三种结果,我比你小,我和你一样,我比你大。调用者小于参数 结果是负数,调用者等于参数,结果是0,调用者大于参数,结果是正数。字典顺序,称为自然顺序。

       例:String s1 = "abcd";

              String s2 = "bcde";

              int num = s1.compareTo(s2);//num=-1,因为a比bASCII码小1

 

7,去掉字符串的两端空格,返回新字符串,String trim(),不去除字符串中间空格。

   例:String s1 = "  abc def  qq  ";

              String s2 = s1.trim();//s2=”abc  def  qq”

 

StringBuffer类

java.lang.StringBuffer,String类固定不变,很浪费内存,运行速度较慢。

StringBuffer是字符串的缓冲区,底层数据结构可变数组(字符),StringBuffer自己会做数组的扩容,删除原数组,降低资源的浪费,提升速度,提高效率。

 

StringBuffer类的构造方法

空参数,默认创建16个位置的数组。

带有String参数的,直接把字符串,装进缓冲区。

 

StringBuffer类的常见方法

1,将数据追加到缓冲区,append(任意类型),出来的结果都是字符串,方法的返回值是StringBuffer,返回本类对象。链式编程,对象调用方法,方法的返回值还是一个对象。

       例://空的缓冲区,里面默认16位置字符数组

              StringBuffer buffer = new StringBuffer();

              //追加数据,用append,方法调用链,链式编程

              buffer.append(true).append(false).append('a').append(1.1).append(22);

              System.out.println(buffer);//buffer=”truefalsea1.122”

 

2,删除缓冲区中的字符串,delete(intstart,int end),包含头,不包含尾。

       例:StringBuffer buffer = newStringBuffer();

              buffer.append(false).append(234);//buffer=”false234”

              buffer.delete(0, 3);//buffer=”se234”

 

3,在缓冲区指定位置插入数据 StringBuffer insert(int index,任意数据)。

       例:StringBuffer buffer = newStringBuffer();

              buffer.append(1234567);

              //指定位置下标3,插入数据 www

              buffer.insert(3,"www");//buffer=”123www4567”

 

4,修改缓冲区中指定位置的单个字符 void setCharAt(int index,char ch)。

       例:StringBuffer buffer = newStringBuffer();

              buffer.append(1234567);

              //修改5下标上的内容为Q

              buffer.setCharAt(5, 'Q');//buffer=”12345Q7”

 

5,翻转缓冲区,StringBufferreverse()

   例:StringBuffer buffer = newStringBuffer();

              buffer.append(1234567);

              buffer.reverse();//buffer=”7654321”

 

6,将缓冲区中的内容变成字符串,可变对象转成不可变对象,就可以直接使用String类的方法,String toString()

       例:StringBuffer buffer = newStringBuffer();

              buffer.append(1234567);

              String s = buffer.toString();//s=”1234567”

 

StringBuilder类

Java.lang.StringBuilder,开始于JDK1.5版本,StringBuilder类的方法,以及类的使用方法和StringBuffer完全一致。

区别:

     StringBuffer 线程安全,运行速度慢。(线程安全==同步)

    StringBuilder 线程不安全,运行速度快。(线程不安全==不同步)

开发单线程程序,采用StringBuilder。

 

基本数据类型对象包装类

  一切都是对象,8个基本数据类型,也进行了对象的封装,提供更多的方法和属性,方便操作这些基本数据类型。这些类,全部在java.lang包中。

byte 对应包装类 Byte

short 对应包装类 Short

int 对应的包装类Integer

long 对应的包装类Long

boolean 对应的包装类 Boolean

float 对应的包装类 Float

double 对应的包装类 Double

char 对应的包装类Character

 

Integer类

最重要方法:

  将数字格式的字符串,转成基本数据类型int,进行数学计算。

1,静态方法 static int parseInt(String s)将参数字符串,转成基本数据类型,字符串中的字符必须是数字格式。

   例:String s = "123";

              int i = Integer.parseInt(s);//i=123

 

2,静态方法 static int parseInt(String s,int radix) radix进制,表示前面的字符串参数是几进制的数据,方法的计算结果都是十进制。

   例://”34567”变成int类型9进制的34567,输出的结果是十进制

              int i =Integer.parseInt("34567",9);

 

Integer类的其他方法:

1,进制转换方法,将十进制转成二进制,八进制,十六进制。                              例:System.out.println(Integer.toBinaryString(175788));//转成二进制

              System.out.println(Integer.toOctalString(20));//转成八进制

              System.out.println(Integer.toHexString(1789));//转成十六进制

 

2,构造方法,两种重载形式,第一个重载传递int,第二个重载传递String。将参数包装成Integer对象,需要一个方法配合,返回是int intValue() 将构造器中的参数转成基本数据类型int

   例:Integer i = new Integer(“25”);

              int x = i.intValue();//转换成int的x=25

 

3,静态方法 static String toString(int i)基本类型转成String对象。

4,静态方法 static String toString(int i,int radix),返回字符串,字符串表示的是i的radix进制,参数第一个是十进制。

       例:String s = Integer.toString(3);//s=”3”

              String str = Integer.toString(6,2);//str=110

 

自动装箱和拆箱(JDK1.5的新特性)

可以直接让引用类型和基本数据类型进行运算

      自动--不需要程序人员手动参与,但是知道原理是什么

装箱--基本类型包装成对象

      拆箱--引用类型变化基本数据类型

例://进行自动装箱,将基本数据类型,封装成对象

              Integer i = 10;//其实是这样的 :Integer i = new Integer(10);            

              if(i!=null)

//引用类型,转成了基本类型,自动拆箱

                 i = i + 1;//求和以后,和值赋值给引用变量i ,又是一次自动装箱     

             

              //取值范围是byteJVM运行的时候,不会从新开辟内存空间

              Integer ii = 127;

              Integer jj = 127;

              System.out.println(ii==jj);//true

              System.out.println(ii.equals(jj));//true

正则表达式Regex

Java.util.regex,正则表达式,专门处理杂操作的字符串。

  弊端:JVM的底层也是通过大量的计算和String类的方法,来实现正则的功能,效率相对较低。

 

正则表达式的匹配功能

 String类方法matches实现。方法是String类对象调用 "".matches()方法参数,就是一个正则表达式,就是一种规则。检测字符串和规则是否匹配,完全匹配返回真。

例:num.matches("[1-9][0-9]{4,10}");//第一位19,后面4位或1009

num.mathces("......")

java.util.Regex.Pattern类,描述了正则怎么写

字符类[abc] 匹配字符是不是abc其中的一个       例:b =s.matches("a[abc]c");

字符类[^abc] 只要不是abc其中一个      

字符类[a-zA-Z] 匹配所有的字母

字符类[0-9] 匹配所有的数字

预定义字符 \d 匹配所有数字     例:b =s.matches("a[\\d]c");

预定义字符 \D 匹配所有非数字       例:b =s.matches("a[\\D]c");

预定义单词字符 \w 匹配26个字母大小写,数字和下划线_, 例:[\\w]

预定义单词字符 \W 匹配非26个字母大小写,数字下划线_, 例:[\\W]

数量词 ? 匹配一次或者一次也没有        例:b = s.matches("ac?");

数量词 * 匹配零次、一次或多次     例:b =s.matches("ac*");

数量词 + 一次到多次           例:b = s.matches("ac+");//前面是ab,后面有多个b

数量词 {n} 恰好n次           例:b =s.matches("ab{3}")//刚好3次

数量词 {n,} 至少n次          例:b =s.matches("ab{3,}")//至少3次

数量词 {n,m} 至少n次,但不超过m次 例:b = s.matches("ab{3,5}")//》3&&《5

例:验证身份证号和qq号

//18位 第一位123456,最后一个可能有X

              boolean b =num.matches("[123456][0-9]{16}[0-9X]");

              //规则 1开头,第二位356874,后面0-9,一共11位

              boolean b =num.matches("1[356784][0-9]{9}");

 

正则表达式的切割功能

 String类的方法split("正则规则") 返回字符串数组。

  正则组:符号()表示一个组,专门处理叠词:aa、11、东东

  叠词切割格式:(.)\\1+  

   例:String s ="wqqecffffoccccccmrrrrrrrrrrrrrrre";

              String[] str =s.split("(.)\\1+");//str=”wecome”

 

正则表达式替换功能

 String类的方法repalceAll(Stringregex,String replace),replace替换regex。

替换叠词,可以用捕获组 $,捕获到组匹配上的叠词中的字符。

              String s ="weqqqqlcfffffomekkkkkkktochmmmmmmmina";

              s = s.replaceAll("(.)\\1+","$1");//s=”weqlcfomektochmina”

 

练习:验证电子邮件格式和叠词还原

package cn.itcast.regex;

public class RegexTest{

       publicstatic void main(String[] args) {

              check_Email("chuanzhiboke@163.com");

              dieCi("我我我...我..要要要要...要要..学..学学学..学.编编编...编编编.程");

       }

      //验证电子邮件格式

       publicstatic void check_Email(String email){

              boolean b =email.matches("[a-zA-Z0-9_]+@[a-z0-9]+(\\.[a-z]+)+");

              System.out.println(b);//b=true

       }

       //叠词还原

       publicstatic void dieCi(String s){

              s = s.replaceAll("\\.+","");

              s = s.replaceAll("(.)\\1+","$1");

              System.out.println(s);s=”我要学编程”

       }    

}

 

正则表达式查找功能

 在一个字符串中,使用正则表达式,将需要的内容,获取出来

 实现功能,需要2个类的支持,java.util.regex,Pattern和Matcher

实现步骤:

1,正则规则预编译,使用Pattern类静态方法compile(正则规则),方法返回一个对象,这个对象就是Pattern类的本类对象。

2,Pattern类的对象,调用Pattern类的非静态方法Mathcer matcher(查找的字符串),将正则规则和查找字符串进行匹配,返回一个对象,是Matcher(匹配器)。

3,调用Mathcer类方法find进行查找,找到返回真,找不到返回假。

4,调用Matcher类的方法group获取查找后结果,方法返回字符串。

Mathcer类两个方法:start()、end(),返回值都是int,返回获取到的字符串的前后下标,包含头不包含尾。

例:找出字符串中3个字母的单词的内容和前后下标

   public static void main(String[] args) {

              String s = "father and monther ilove you but i can not do something";

              String regex ="\\b[a-zA-Z]{3}\\b";//边界匹配器,\b单词边界

              Pattern p = Pattern.compile(regex);//预编译

              Matcher m = p.matcher(s);//创建匹配器

//循环查找和获取

              while(m.find()){

                     System.out.print(m.group());

                     //System.out.println(m.start()+"  "+m.end());前后下标

              }//结果:andyoubutcannot

       }

 

日期类Date

java.util.Date,

java.text.Format,抽象类

java.text.DateFormat,抽象类

java.text.SimpleDateFormat

日期和时间也是对象,描述类,描述时间和日期。

获取毫秒值都是到19701100:00:00的毫秒值。

构造方法:

1,Date()空参数的,获取当前操作系统的时间和日期。

2,Date(long l)传递long参数,传递毫秒值,返回这个毫秒值对应的那个时间和日期,System.currentTimeMillis()

例:Date d = new Date();//获取当前操作系统的时间和日期

long time = System.currentTimeMillis();//获取当前系统时间的毫秒值

Date d = new Date(1406859587984l);//d=long型140-41毫秒值对应的时间

 

Date类的方法

1getTime()返回long型参数,结果是Date对象日期对应的毫秒值。获取当前系统毫秒值,System. currentTimeMillis()

2setTime(long)传递毫秒值,将日期设置到指定毫秒值。

例:long time = d.getTime();//time=d的时间的毫秒值。           

              d.setTime(1406859587984L);//调用setTime方法,传递毫秒值。

 

3,boolean after(Date d)测试,当前日期是不是在参数指定的日期之后,如果是返回真。

4,boolean before(Date d) 测试,当前日期是不是在参数指定的日期之前,如果是返回真。

       例:boolean b = d1.after(d2); //测试d1是不是在d2之后

              b = d1.before(d2);//测试d1是不是在d2之前

 

日期的格式化

 显示成国人习惯看的日期格式:2014-01-01 15:31:31

 java.text.DateFormat,是抽象类,不能实例化对象。

 DateFormat的子类SimpleDateFormat,子类对象调用父类方法format传递日期对象,返回String。

       例:SimpleDateFormat sdf = newSimpleDateFormat("yyyy-MM-dd  HH:mm:ss");//传递时间模式:2014-01-01 15:31:31

              String date = sdf.format(new Date());//调用父类方法format

    

日期的风格化

  直接使用抽象父类DateFormat的静态方法,返回子类对象,形成多态。

  1,只需要日期,static getDateInstance(int 日期风格)。

  2,需要日期和时间,staticgetDateTimeInstance(int 日期风格, int 时间风格)。

 DateFormat类中,提供静态常量,直接类名调用LONG,SHORT

  调用DateFormat类的方法format(Date d)

      例:DateFormatdf = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);//静态方法getDateTimeInstance获取子类对象,指定风格

                     Stringdate = df.format(new Date());    //调用方法format格式化日期

 

字符串转成日期对象

  将String-->Date,凡是用户的输入,全部是字符串。

  需要DateFormat类的方法,Date parse(String s)。

     例://静态方法,返回DateFormat类子类对象

              DateFormat df =DateFormat.getDateInstance();//2222-22-22

              Date d = df.parse("2014-3-3");

 

日期的练习:

  需求:用户输入两个日期,计算两个日期相差多少天

  思路:

1,输入:Scanner 类方法 String nextLine()。

     2,两个字符串,转成日期对象Date。

     3,两个日期转成毫秒值。

4,进行减法运算并转换成天数。

例:package cn.itcast.date;

import java.util.Scanner;

import java.util.Date;

import java.text.DateFormat;

public class DateTest {

       public static voidmain(String[] args) throws Exception{

              Scanner sc = new Scanner(System.in);

              System.out.println("输入第一个日期");

              String str1 = sc.nextLine();

              System.out.println("输入第二个日期");

              String str2 = sc.nextLine();

              //获取到DateFormat类的子类对象

              DateFormat df = DateFormat.getDateInstance();

              Date date1 = df.parse(str1);//字符串转成Date类型

              Date date2 = df.parse(str2);//字符串转成Date类型

       //两个日期转成毫秒值

              long time1 = date1.getTime();

              long time2 = date2.getTime();

              //计算两个毫秒值之间的差

              //math.abs方法,获取绝对值

              long time3 = Math.abs(time1 - time2);

              System.out.println(time3/1000/60/60/24);

       }

}

 

日历类Calendar

 java.util.Calendar,描述日历类的对象,抽象类。

 从JDK1.1开始,很多Date类的中的方法,被日历类Calendar取代。

 直接使用静态方法getInstance获取日历类子类对象。

Calender  get方法

int get(int field)传递一个日历字段,返回的就是字段对应的具体数字日历字段的写法,参照文档。

例:

//使用静态方法,获取日历类的子类对象

package cn.itcast.date;

import java.util.Calendar;

public class CalendarDemo {

       public static voidmain(String[] args) {

              Calendar c = Calendar.getInstance();

              showCalendar(c);      

       }

              //定义方法,传递日历类对象,格式:20141111星期三 195555      

       public static voidshowCalendar(Calendar c){

              System.out.println(c.get(Calendar.YEAR)+"年"+getZero((c.get(Calendar.MONTH)+1))+"月"+

              getZero(c.get(Calendar.DAY_OF_MONTH))+"日 "+getWeek((c.get(Calendar.DAY_OF_WEEK)-1))+" "+

              c.get(Calendar.HOUR_OF_DAY)+"点"+c.get(Calendar.MINUTE)+"分"+c.get(Calendar.SECOND)+"秒");

       }

//定义方法,实现月份、天数不足2位,补0      

       private static StringgetZero(int num){

              if(num < 10)

                     return"0"+num;

              else

                     returnnum+"";

       }

             //定义方法,数组的查表法,修正星期日的问题

             private static String getWeek(int week){

              String[]s = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};

              returns[week];

       }

}

 

Calendar类的其他方法

set方法设置日历,如果不设置,日历就是操作系统上的日历。

  1,set(int field,int value)第一个参数,设置的日历字段,第二个参数具体的数值。

   例:Calendar c =Calendar.getInstance();

              c.set(Calendar.YEAR, 2015);//修改日历的年份为2015年

              CalendarDemo.showCalendar(c);

 

  2,set(int year,int month,int day)设置日历,设置年月日。

   例:Calendar c =Calendar.getInstance();

              c.set(2014, 11, 12);//修改日历,到2014年的12月12日

              CalendarDemo.showCalendar(c);

 

  3,setTime(Date d)日历设置为Date对象指定的日期。

  4,setTimeInMillis(long millis) 设置日历为指定的毫秒值。

  5,日历的偏移量 void add方法,对日历中的某一个字段,进行偏移,

 void add(int 日历字段,int 数据)。

       例:Calendar c =Calendar.getInstance();         

              c.add(Calendar.DAY_OF_MONTH, 15);//让天数向后偏移15天

              CalendarDemo.showCalendar(c);

 

日历小练习

1,判断是不是闰年,把这一年的3月1日向前偏移1天,为29则是闰年。

例:public static void method(){

                     Calendar c = Calendar.getInstance();

                     c.set(2008, 2, 1);//设置日历,到2008年的3月1日

                     //这个日历,向前偏移1天

                     c.add(Calendar.DAY_OF_MONTH, -1);

                     System.out.println(c.get(Calendar.DAY_OF_MONTH));

 

2,保质期的计算,生成日期是2014年1月19日,保质期186天。

              例:public static void method_1(){     

                     Calendarc = Calendar.getInstance();

                     c.set(2014,0, 19);//生成日期,2014年1月19日

                     c.add(Calendar.DAY_OF_MONTH,186);//天数偏移186天

                     CalendarDemo.showCalendar(c);

 

Math类

Java.lang.math,数学计算类,方法都是进行数学计算的。

1,伪随机数,Math.random(),返回double 0.0-1.0

2,绝对值,Math.abs()

3,获取两个数中较大的值   //Math.max()

4,获取两个数中较小的值   //Math.min()

5,向上取整,ceil(double d)获取大于等于该参数的最小整数。

6,向下取整,floor(double d)获取小于等于该参数的最大整数。

7,幂运算,pow(double x,double y)计算x的y次方。

8,四舍五入,round(double d)计算方式是参数+0.5后的结果。   

       例:System.out.println(Math.ceil(-11.1));//-11.0

              System.out.println(Math.floor(-11.1));//-12.0

              System.out.println(Math.pow(2, 5));//32

              System.out.println(Math.round(-1.5));//-1

 

大数据运算

超级大数,四则运算+ - */使用大数据的运算类方法实现。

java.math.BigInteger  

java.math.BigDecimal

BigInteger类

new对象,通过构造方法传递字符串,字符串是数字格式,没有位数限制,返回整数类型。

大数据加法运算返回值,BigIntegeradd(BigInteger big)

大数据减法运算返回值,BigIntegersubtract(BigInteger big)

大数据乘法运算返回值,BigIntegermultiply(BigInteger big)

大数据除法运算返回值,BigIntegerdivide(BigInteger big)

 

BigDecimal类

New对象,通过构造方法传递字符串,数字格式,可以写浮点,没有位数限制。

加法,减法,乘法,和BigInteger类一模一样。

大数据除法运算,带浮点返回值BigDecimal divide(BigDecimal对象,保留几位,舍入模式) 舍入模式在类的静态常量。

舍入模式:

ROUND_UP 向上加1

ROUND_HALF_UP 四舍五入

ROUND_DOWN 直接舍去保留位后面的值

ROUND_HALF_DOWN  向下+1

 

System类

  java.lang.System

 System.in,标准输入流

 System.out,标准输出流

 gc()运行垃圾回收器。

 exit(0)终止JVM的运行,后面的代码不执行。

 currentTimeMillis()返回1970的毫秒值。

 getPropeties()返回操作系统的属性。

 

Runtime类

 java.lang.Runtime

 使用静态方法getRuntime()获取Runtime类的对象,不能自己new

 调用方法exec(String s)

例:用记事本打开ArrayDemo.java

       publicstatic void main(String[] args)throws Exception {

              Runtime r = Runtime.getRuntime();

              Process p =r.exec("notepadE:\\workspace\\\ArrayDemo.java");

              Thread.sleep(3000);//延迟3000毫秒

              p.destroy();//杀掉子进程

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值