您的位置:首页 > 编程语言 > Java开发

[JAVA · 0基础]:16.经常使用类

2017-07-29 09:55 393 查看

基本类型包装

为什么须要包装类?

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()    注意两个的差别!

枚举

枚举类型:

仅仅可以取特定值中的一个

使用enumkeyword

全部的枚举类型隐性地继承自 java.lang.Enum。

(枚举实质上还是类!而每一个被枚举的成员实质就是一个枚举类型的实例。他们默认都是public static final的。能够直接通过枚举类型名直接使用它们。)

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

尽量不要使用枚举的高级特性。其实高级特性都能够使用普通类来实现,没有必要引入复杂性。

业务思想

经常使用类是关于我们在寻常工作中经常使用到的一个简单的例举。

理解起来非常easy。可是在使用中却须要我们小心它们,一个不慎,非常有可能与想象中非常不同样呢。




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: