[JAVA · 初级]:16.常用类

来源:互联网 发布:网络天才akinator很卡 编辑:程序博客网 时间:2024/04/30 00:59

基本类型包装

为什么需要包装类?

JAVA并不是纯面向对象的语言。Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的。但是我们在实际使用中经常需要将基本数据转化成对象,便于操作。比如:集合的操作中。 这时,我们就需要将基本类型数据转化成对象!

均位于java.lang包,包装类和基本数据类型的对应关系:


包装类的作用:

提供:字符串、基本类型数据、对象之间互相转化的方式!

包含每种基本数据类型的相关属性如最大值、最小值等

所有的包装类(Wrapper Class)都有类似的方法,掌握一个其他都类似!

自动装箱

基本类型就自动地封装到与它相同类型的包装中,如:

Integer i = 100;

本质上是,编译器编译时为我们添加了:

Integer i = new Integer(100);

自动拆箱

包装类对象自动转换成基本类型数据。如:

int  a = newInteger(100);

本质上,编译器编译时为我们添加了:

int  a = newInteger(100).intValue();

字符串

特性:

                   1)它必须使用一对双引号括起来。例如: "ABC"  "A"  "6"  ""

                   2)它不变。不怎么针对字符串操作,该串本身不变。

                   3)串中的每一个字符均有一个索引号。该索引号从 0 至 length()-1。 

说明: length()方法,用来求串的长度。

                   4)串是一个对象,因此,它拥有属性和方法。

                   5)相同的字符串是共享的。

String(不可变字符序列)  

Java字符串就是Unicode字符序列,例如串“Java”就是4个Unicode字符J,a,v,a组成的。

Java字符串就是Unicode字符序列,例如串“Java”就是4个Unicode字符J,a,v,a组成的。

Java允许使用符号"+"把两个字符串连接起来

–  String s1 = “Hello”;String s2 = “World!”;

–  String s = s1 + s2; //HelloWorld!

String类的常用方法:查看API文档,不累述。

字符串相等的的判断:一般使用equals()方法。

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


字符串的选用

String:不可变字符序列

StringBuilder:可变字符序列、效率高、线程不安全

StringBuffer:可变字符序列、效率低、线程安全


String使用陷阱

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

时间处理


在标准Java类库中包含一个Date类。它的对象表示一个特定的瞬间,精确到毫秒。

Java中时间的表示说白了也是数字,是从:标准纪元1970.1.1 0点开始到某个时刻的毫秒数,类型是long。

DateFormat和SimpleDateFormat 完成字符串和时间对象的转化!


DateFormat类

1) 它来源于 java.text.DateFormat类

2) 它的作用:

a) 用来实现日期时间的格式化;

b) 将 日期时间型字符串 转换成 Date类的对象。


SimpleDateFormat 类

                   1)它来源于 java.text.SimpleFormat类

                   2)它的作用:

                                 a)用来实现 日期时间的格式化;

                                        先创建对象,指格式;

                                        再格式化Date对象,得到结果;

                                        例如: SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");

                                                 String re = sdf.format( new Date() );

                                 b)将 日期时间型字符串 转换成  Date类的对象。

                                        根据给定的字符串,来创建一个SimpleDateFormat的对象。

                                        调用 parse( String )实现解析

        例如:                                              

<span style="font-size:18px;"><span style="font-size:18px;">String str = "===>>>2016年3月6号北京时间:15点23分21秒<<<===";SimpleDateFormatsdf = new SimpleDateFormat("===>>>yyyy年MM月dd号北京时间:HH点mm分ss秒<<<===");Dated1 = sdf.parse( str ); //解析</span></span>

注意: SimpleDateFormat类是DateFormat类的子类。

注意: SimpleDateFormat类在格式化和转换上均灵活。


Demo

<span style="font-size:18px;"><span style="font-size:18px;">/** *         SimpleDateFormat类的灵活性 */ packagecom.hqg.oop.d311.a2; import java.text.DateFormat;importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.Date; public classSimpleDateFormatTest {       public static void main(String[] args)throws ParseException {              Date d1 = new Date();              String str1 = DateFormat.getDateInstance().format(d1 );                           SimpleDateFormat sdf = newSimpleDateFormat("\n★====^_^======★\nyyyy年MM月dd日\n★====^_^======★\n");              String str2 = sdf.format( d1 );//将d1按照sdf对象的要求实现 格式化                           System.out.println("默认d1>>>> " + d1 );              System.out.println("格式化str1>>>> " + str1 );              System.out.println("格式化str2>>>> " + str2 );                           sdf = newSimpleDateFormat("HH点mm分ss秒");              str2 = sdf.format( d1 ); //将d1按照sdf对象的要求实现 格式化              System.out.println("\nst2>>>" + str2 );                           sdf = newSimpleDateFormat("D");              str2= sdf.format( d1 );              System.out.println("\nst2>>>" + str2 );                           str1 = "中国北京时间: 2008年08月08号20点8分8秒";              SimpleDateFormat sdf2 = newSimpleDateFormat( "中国北京时间: yyyy年MM月dd号HH点mm分ss秒");              Date dd = sdf2.parse( str1 ); //将str1 这个串按照 sdf2对象的格式进行解析              System.out.println( dd );                           str1 = "中工期2016===03===11==";              sdf2 = new SimpleDateFormat("中工期yyyy===MM===dd==" );              Date dd2 = sdf2.parse( str1 );              System.out.println( dd2 );                    }}</span></span>


Calendar日历类

什么是日历?

  日历  :时间的一个经历, 时间的长河。

日期与日历?

  日期表示一个静态的时间,是一个瞬间。

  日历表示动态时间,包含了: 过去,现在,未来。

人们对于时间的认识是:某年某月某日,这样的日期概念。计算机是long类型的数字。通过Calendar在二者之间搭起桥梁! 

GregorianCalendar公历 

GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。

注意:

月份:一月是0,二月是1,以此类推,是12月是11

星期:周日是1,周一是2,。。。周六是7

Math

包含了常见的数学运算函数。

random()生成[0,1)之间的随机浮点数

生成:0-10之间的任意整数:

int   a = (int)(10*Math.random());

生成:20-30之间的任意整数:

int   b = 20 + (int)(10*Math.random()); 

File

java.io.File类:文件和目录路径名的抽象表示形式

通过File对象可以访问文件的属性。
   public boolean canRead()     public boolean canWrite()
    public boolean exists()      public boolean isDirectory()
    public boolean isFile()      public boolean isHidden()
    public long lastModified()   public long length()
    public String getName()      public String getPath()

通过File对象创建空文件或目录(在该对象所指的文件或目录不存在的情况下)。

public booleancreateNewFile()throws IOException

public booleandelete()

public booleanmkdir(), mkdirs()    注意两个的区别!!

枚举

枚举类型:

只能够取特定值中的一个

使用enum关键字

所有的枚举类型隐性地继承自 java.lang.Enum。(枚举实质上还是类!而每个被枚举的成员实质就是一个枚举类型的实例,他们默认都是public static final的。可以直接通过枚举类型名直接使用它们。)

强烈建议当你需要定义一组常量时,使用枚举类型

尽量不要使用枚举的高级特性,事实上高级特性都可以使用普通类来实现,没有必要引入复杂性!

业务思想

常用类是关于我们在平常工作中经常使用到的一个简单的例举。理解起来很简单,但是在使用中却需要我们小心它们,一个不慎,很有可能与想象中很不相同呢。




2 0
原创粉丝点击