[JAVA · 0基础]:16.经常使用类
基本类型包装
为什么须要包装类?
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。可是在使用中却须要我们小心它们,一个不慎,非常有可能与想象中非常不同样呢。
[JAVA · 0基础]:16.经常使用类的更多相关文章
- [JAVA · 0基础]:19.容器类
概述 容器 就是存放数据的一个集合 (java提供了一个接口专门去约束我们容器的实现类) watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L ...
- [JAVA · 0基础]:3.转义字符
定义 全部的ASCII码都能够用"\"加数字(通常是8进制数字)来表示.而C中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\ ...
- [JAVA · 0基础]:11.终结者-final
关于finalkeyword的总结,是非常easy学习和掌握的,大致分为用final修饰的符号常量.类.方法.属性四部分.而这四部分的内容也是我们必须掌握的,非常有用.在项目中常常来利用finalke ...
- Effective Java 第三版——16.在公共类中使用访问方法而不是公共属性
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...
- JAVA核心技术I---JAVA基础知识(工具类Arrays和Collections类)
一:工具类 –不存储数据,而是在数据容器上,实现高效操作 • 排序 • 搜索 –Arrays类 –Collection类 二:Arrays类(处理数组) (一)基本方法 –排序:对数组排序, sort ...
- JAVA核心技术I---JAVA基础知识(数字相关类)
一:相关数字类 –整数 Short, Int, Long –浮点数 Float, Double –大数类 BigInteger(大整数), BigDecimal(大浮点数) –随机数类 Random ...
- Java入门 - 语言基础 - 04.对象和类
原文地址:http://www.work100.net/training/java-object-class.html 更多教程:光束云 - 免费课程 对象和类 序号 文内章节 视频 1 概述 2 J ...
- JAVA核心技术I---JAVA基础知识(时间类)
一:时间类库了解 java.util.Date(基本废弃,Deprecated) –getTime(),返回自1970..1以来的毫秒数 java.sql.Date(和数据库对应的时间类) //与数据 ...
- java并发编程基础——线程相关的类
线程相关类 java还为线程安全提供了一些工具类. 一.ThreadLocal类(Thread Local Variable) ThreadLocal类,是线程局部变量的意思.功用非常简单,就是为每一 ...
随机推荐
- android 笔记(Service)
Service 一.Serivce的启动方式分两种 1.startService.用这种方式启动的话,负责启动这个service的Activity或者其他组件即使被销毁了,Service也会继续在后台 ...
- [react-router] 平时积累
path通配符: <Route path="/hello/:name"> // 匹配 /hello/michael // 匹配 /hello/ryan <Rout ...
- latex beamer 插入代码
有网友在beamer中使用mcode也就是 listings 输出源代码时遇到如下错误: Runaway argument?! Paragraph ended before \lst@next was ...
- Django简单粗暴快速发送邮件!
>>尽管Python已经提供了相对易用的邮件发送模块 smtplib ,但Django仍对其做了轻度的封装.封装后的模块不仅发送邮件速度快,而且在开发环境下也很容易对邮件发送进行测试, 并 ...
- ABP开发框架前后端开发系列---(2)框架的初步介绍
在前面随笔<ABP开发框架前后端开发系列---(1)框架的总体介绍>大概介绍了这个ABP框架的主要特点,以及介绍了我对这框架的Web API应用优先的一些看法,本篇继续探讨ABP框架的初步 ...
- python安装numpy和matplotlib
1.从该链接下载对应的whl文件 2.按照下面的方式从whl文件安装即可 windows7 python2.7 1.用管理员方式打开cmd 2.首先通过pip命令安装wheel 如果提示’pip’不是 ...
- andriod打开摄像头和打开相册
package com.example.yanlei.picture; import android.support.v7.app.AppCompatActivity; import android. ...
- Python爬虫之路——简单网页抓图升级版(添加多线程支持)
转载自我的博客:http://www.mylonly.com/archives/1418.html 经过两个晚上的奋斗.将上一篇文章介绍的爬虫略微改进了下(Python爬虫之路--简单网页抓图),主要 ...
- 手把手教你如何利用Meterpreter渗透Windows系统
在这篇文章中,我们将跟大家介绍如何使用Meterpreter来收集目标Windows系统中的信息,获取用户凭证,创建我们自己的账号,启用远程桌面,进行屏幕截图,以及获取用户键盘记录等等. 相关Payl ...
- 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC 【转】
http://www.cnblogs.com/powertoolsteam/p/MVC_one.html 系列文章 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC 七天学会A ...