string转date类型_10:Wrapper;String;Date;Math;File;Enumeration;Syst

  • 1. 包装类的基本用法
  • 2.自动装箱和拆箱

1. 包装类的基本用法

1.1 为什么需要包装类(Wrapper Class)


Java 并不是纯面向对象的语言。

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

1.2 包装类和基本数据类型的对应关系

基本数据类型

包装类

byte ——Byte

boolean—— Boolean

short ——Short

char ——Character

int ——Integer

long ——Long

float ——Float

double ——Double

1.3 包装类的继承关系

2be1cddee9e0bbbd2f96b9953d452614.png

1.4 包装类的基本操作 以 Integer 举例

0611bddb0bc0afd89808e9581da65aac.png

Attention:

IntegerClass override equals method and toString method.




2.自动装箱和拆箱

2.1 自动装箱 auto-boxing

基本类型就自动地封装到与它相同的类型的包装类中 Integer i=100;


This is because the compiler calls valueOf()method:


Integer i=Integer.valueOf(100);

Integer 中的缓存类 IntegerCache
Cache 为

[-128,127],IntegerCache 有一个静态的 Integer 数组,在类加载时就将-128 到 127 的 Integer 对象创建了,并 保存在 cache 数组中,一旦程序调用 valueOf 方法,如果取 的值是在-128 到 127 之间就直接在 cache 缓存数组中去取 Integer 对象,超出范围就 new 一个对象。

2.2 自动拆箱 unboxing 包装类对象自动转换成基本类型数据

int a=new Integer(100);

编译器为我们添加了

int a=new Integer(100).intValue();

wi’cai’ban’lan’wu




3.String 类底层分析_JDK 源码分析

3.1String 的底层数据结构


String 的底层数据结构是 char 类型的数组
String 的相应方法的实现实际上就是对数组的一个操作

3.2String、StringBuilder、StringBuffer

1、String是字符串常量,StringBuffer和StringBuilder都是字符串变量。后两者的字符内容可变,而前者创建后内容不可变。

2、String不可变是因为在JDK中,String类被声明为一个final类。

3、StringBuffer是线程安全的,而StringBuilder是非线程安全的。




4.StringBuilder_StringBuffer 用法_JDK 底 层源码分析

4.1 可变的字符串

StringBuilder:效率高,安全性低

StringBuffer:效率低,安全性高

4.2StringBuilder 的常用方法的使用

append();//主要用于字符串的追加。

delete();//主要用于删除一段字符,但是

//含头不含尾。这段字符的头字符

//被删

deleteCharAt();//删除指定字符。

insert();//主要用于在数组的指定位置添加一个

//字符

indexof();//主要用于找字符,找到返回数

//字下表,找不到返回-1。

19c94edc2ebb5501757e4ea11b21e877.png

c2be1f8dbfda8c0c3e912b5c638df7e9.png

4.3StringBuilder JDK 源码分析

两者的method基本可以通用,只是在效率和安全上有所区别。




5.不可变字符序列和可变字符序列的深入

javap 是 JDK 自带的一个工具,可以反编译,也可以查看 Java

编译器生成的字节码,是分析代的一个好工具。 -c 对代码进行反汇编

  1. 在等号”=”右侧有variable or “new” keywords,the heap will create new space.

eg:variable

7a4b20fe7cce58fafa5cf76faf42a31e.png



6.java.util.Date

Java 有关获取时间的类:Date类、SimpleDateFormat类和Calendar类

6.1java.util.Date

432e24bcc8ce530c4f9f18164da882ca.png

long getTime()
返回自1970年1月1日以来,由此 Date对象表示的

00:00:00 GMT 的毫秒数

6.2java.sql.Date

6.3java.sql.Date

6.4java.sql.Timestamp




7.DateFormat SimpleDateFormat

Java 有关获取时间的类:Date类、SimpleDateFormat类和Calendar类

Date类

完成字符串和时间对象的转换

1)date->string, use format(Date d) method;

2)string->data, use prase(String s) method;

ddd32c2821a867b0f818d54f74ae2685.png

432e24bcc8ce530c4f9f18164da882ca.png



8.Calendar

Java 有关获取时间的类:Date类、SimpleDateFormat类和Calendar类

8.1Calendar

人们对于时间的认识是:某年某月某日,这样的日期概念。

计算机是 long 类型的数字。通过 Calendar 在二者之间搭起桥 梁!

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

月份:一月是 0,二月是 1,以此类推,是 12 月是 11 星期:周日是 1,周一是 2,。周六是 7

8.2Calendar 的常用方法

set();get();getTime();setTime();

add(field,amount;)(在年、月、日三个field中选择一个,增加。比如在“日”中,增加10天。)

74d59eaf02b1d8a99ec0c0812be3b487.png

8.3 使用 Calendar 编写万年历




9.Math

9.1Math 类的常用方法

1)Math.abs() //absolute value 绝对值

2)向上取整再转double

0e3149bf9e3b9efb4b177cfff6133dd8.png

48b97191229e787efb92a2f9c55fe61c.png

3)

d050a2c80da0ad0bc81912449cff2f14.png

4)平方 eg: 5,2=25;

85f4b6231790732f936ad8e0399ca6f7.png

5)开方

4f58fd2d0e93ea30176c44a9f03d3650.png

6)随机数

3a241084f39388fb337b5652ef3eb881.png

7)

38b8d1057d27c7c4820d2e1f79a82482.png

9.2 静态导入 JDK1.5

1)java 默认import java.lang.*;

2)JDK1.5之后,We can sue “static import”, this is its format:

c3556503d90b75eceabaf98b06a25195.png

When we use this format, we can omit “Math.”;




10.File

  • 文件和目录路径名的抽象表示形式。一个 File 对象可以代表 一个文件或目录 。
  • function:可以实现获取文件和目录属性等功能。可以实现对文件和目录的创建、删除等功能。
  • File 不能访问文件内容 。

10.1File 类操作文件

1)file class locat in package:java.io.*;

2)create FileClass object;

481ea49b74aa52cc374ed0c8ea99c229.png

3)method

38ffe1282298512319ef1e43a95ffdce.png

10.2File 类操作目录




11.使用递归算法遍历目录结构和树结构

编写一个程序:以树状结构展现特定的文件夹及其子文件 (夹)(使用递归来做)




12.枚举

12.1 枚举的定义

其值是固定的,我们在使用的时候只能够取特定值中的一个。

使用 enum 关键字 。

12.2 枚举的使用

而每个被枚举的成员实质就是一个枚举类型的实例,他们默认都是 public static final 的。可以直接通过枚举类型名直接 使用它们。)

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

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

12.3 枚举与类的关系


所有的枚举类型隐性地继承自 java.lang.Enum。(枚举实质上还是类! )

bf7c4c12cbe96b54ae14a05d1d766ee5.png



System_class

System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。该类位于java.lang包。

由于该类的构造方法是private的,所以无法创建该类的对象,也就是无法实例化该类。其内部的成员变量和成员方法都是static的,所以也可以很方便的进行调用。

1、成员变量

System类内部包含in、out和err三个成员变量,分别代表标准输入流(键盘输入),标准输出流(显示器)和标准错误输出流(显示器)。

例如:

System.out.println(“Test”);

该行代码的作用是将字符串”Test”输出到系统的标准输出设备上,也就是显示在屏幕上。

后续在学习完IO相关的知识以后,可以使用System类中的成员方法改变标准输入流等对应的设备,例如可以将标准输出流输出的信息输出到文件内部,从而形成日志文件等。

2、成员方法

System类中提供了一些系统级的操作方法,这些方法实现的功能分别如下:

a、arraycopy方法

public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

该方法的作用是数组拷贝,也就是将一个数组中的内容复制到另外一个数组中的指定位置,由于该方法是native方法,所以性能上比使用循环高效。

使用示例:

int[] a = {1,2,3,4};

int[] b = new int[5];

System.arraycopy(a,1,b,3,2);

该代码的作用是将数组a中,从下标为1开始,复制到数组b从下标3开始的位置,总共复制2个。也就是将a[1]复制给b[3],将a[2]复制给b[4],这样经过复制以后数组a中的值不发生变化,而数组b中的值将变成{0,0,0,2,3}。

b、currentTimeMillis方法

public static long currentTimeMillis()

该方法的作用是返回当前的计算机时间,时间的表达格式为当前计算机时间和GMT时间(格林威治时间)1970年1月1号0时0分0秒所差的毫秒数。例如:

long l = System. currentTimeMillis();

则获得的将是一个长整型的数字,该数字就是以差值表达的当前时间。

使用该方法获得的时间不够直观,但是却很方便时间的计算。例如,计算程序运行需要的时间则可以使用如下的代码:

long start = System. currentTimeMillis();

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

int a = 0;

}

long end = System. currentTimeMillis();

long time = end – start;

则这里变量time的值就代表该代码中间的for循环执行需要的毫秒数,使用这种方式可以测试不同算法的程序的执行效率高低,也可以用于后期线程控制时的精确延时实现。

c、exit方法

public static void exit(int status)

该方法的作用是退出程序。其中status的值为0代表正常退出,非零代表异常退出。使用该方法可以在图形界面编程中实现程序的退出功能等。

d、gc方法

public static void gc()

该方法的作用是请求系统进行垃圾回收。至于系统是否立刻回收,则取决于系统中垃圾回收算法的实现以及系统执行时的情况。

e、getProperty方法

public static String getProperty(String key)

该方法的作用是获得系统中属性名为key的属性对应的值。系统中常见的属性名以及属性的作用如下表所示。

属性名列表

属性名

属性说明

java.version

Java 运行时环境版本

java.home

Java 安装目录

os.name

操作系统的名称

os.version

操作系统的版本

user.name

用户的账户名称

user.home

用户的主目录

user.dir

用户的当前工作目录

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值