1、Java的包装类

  基本数据类型我们都很熟悉,例如:int、float、double、boolean、char等,基本数据类型不具备对象的特征,不能调用方法,一般能实现的功能比较简单,为了让基本数据类型也具备对象的特性,Java为每个数据类型都提供了一个包装类,这样我们就可以像操作对象一样,操作这些基本数据类型了

  常见的包装类和基本类型对应关系如下:

  包装类主要提供了两类方法:

  1、进行多个类型之间的转换

  2、将字符串和本类型及包装类相互转换

  比如下面代码:

 int i = 2;
Integer m = new Integer(5);
Integer n = new Integer("8");

  第一行是用基本类型定义了整型变量i,第二行是利用int包装类定义了int对象m,虽然赋值为整型的5,但是现在会将基本类型转换为包装类中的5

  第三行初始化值为字符串类型的"8",但是会被包装类转换成整数类型,这就是包装类的基本使用方法

  每个包装类都可以和其他类进行转换,比如Integer包装类,转换的对应关系如下:

  

根据转换的对应关系,可以写一个简单的实例如下:

 public class HelloWorld {
public static void main(String[] args) { int score1 = 86; // 创建Integer包装类对象,表示变量score1的值
Integer score2=new Integer(score1); // 将Integer包装类转换为double类型
double score3=score2.doubleValue(); // 将Integer包装类转换为float类型
float score4=score2.floatValue(); // 将Integer包装类转换为int类型
int score5 =score2.intValue(); System.out.println("Integer包装类:" + score2);
System.out.println("double类型:" + score3);
System.out.println("float类型:" + score4);
System.out.println("int类型:" + score5);
}
}

通过这个简单的包装类转换程序,可以看出包装类转换为各种基本数据类型也是很方便的

那么基本类型怎么转换为包装类的对象呢?其实前面三行代码已经体现了,只不过不太完全,基本类型转换为包装类可以理解为一个装箱的过程,装箱有两种方式:手动装箱和自动装箱,那么同理包装类转换为基本类型叫做拆箱,同样分为:手动拆箱和自动拆箱,上面的例子就是一个手动拆箱的例子,

那么其中自动装箱和自动拆箱,都是编译器根据数据类型自动完成了转换,简单的代码如下:

 public class HelloWorld {
public static void main(String[] args) {
double a = 91.5; // double类型手动装箱
Double b = new Double(a); // double类型自动装箱
Double c = a; System.out.println("装箱后的结果为:" + b + "和" + c); Double d = new Double(87.0); // Double包装类对象手动拆箱
double e = d.doubleValue(); //Double包装类对象自动拆箱
double f = d; System.out.println("拆箱后的结果为:" + e + "和" + f);
}
}

例子很简单,对每一个数据类型分别完成了自动和手动两个操作,所以b和c的值是一样的,e和f的值是一样的

除了基本数据类型的包装转换之外,基本类型和字符串之间也可以进行转换

比如一个基本类型:int a = 30;有3中方式转换为字符串对象:

  1、使用包装类的toString方法,String str1 = Integer.toString(a);

  2、使用String类的valueOf方法,String str2 = String.valueOf(a);

  3、用一个空字符串加上基本类型,系统会将基本类型转换为字符串类型,String str3 = a + "";

反过来,定义:String str = "18";将一个字符串类型转换为基本类型有以下两种方法:

  1、调用包装类的parseXxx静态方法,int b = Integer.parseInt(str);

  2、调用包装类的valueOf方法,完成自动拆箱,int c = Integer.valueOf(str);

其他类型转换也是一样,替换里面的类型即可,下面是一个简单的例子:

 public class HelloWorld {
public static void main(String[] args) { double m = 78.5;
//将基本类型转换为字符串
String str1 = Double.toString(m); System.out.println("m 转换为String型后与整数20的求和结果为: "+(str1+20)); String str = "180.20";
// 将字符串转换为基本类型
Double a = Double.valueOf(str); System.out.println("str 转换为double型后与整数20的求和结果为: "+(a+20));
}
}

这个例子实现了两次转换,所以str1+20应该输出:78.520,a+20应该输出:200.20,前者结果是字符串类型,后者结果是基本的浮点数类型

  2、Java日期时间处理

  程序开发中,时间处理必不可少,这些内容相对简单一些,会使用一些固定的类即可

  首先,我们可以使用java.util包中的Date类来获取时间,方法如下:

 Date d = new Date();
System.out.println(d);

这样是最简单的方法了,但是输出格式可能不太适合我们:Mon Sep 21 21:46:13 CST 2015

所以我们需要进行简单的修饰,那么这时需要java.text包中的SimpleDateFormat类中的format方法对文本进行格式化,代码如下:

 Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String today = sdf.format(d);
System.out.println(today);

这样就输出了我们常用的时间:2015-09-21 21:51:39,另外格式我们也可以按照我们的需要定义

反过来呢,我们还可以把文本变成默认的时间格式,这用到了SimpleDateFormat类中的parse方法,但是这个方法可能会出现异常,所以需要java.text中的异常类ParseException类进行异常处理,看一个小实例:

 import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date; public class HelloWorld { public static void main(String[] args) throws ParseException { // 使用format()方法将日期转换为指定格式的文本
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd HH:mm");
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 创建Date对象,表示当前时间
Date now = new Date(); // 调用format()方法,将日期转换为字符串并输出
System.out.println(sdf1.format(now));
System.out.println(sdf2.format(now));
System.out.println(sdf3.format(now)); // 使用parse()方法将文本转换为日期
String d = "2015-9-21 21:56:36";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 调用parse()方法,将字符串转换为日期
Date date = sdf.parse(d); System.out.println(date);
}
}

例子很简单,实现了时间格式化,文本到日期的转换

另外在java.util包中还有一个时间处理的Calendar类,因为Date类中的本身的设计方法,遭到了众多批评,所以推荐使用Calendar类来处理时间,Calendar类是一个抽象类,可以通过调用getInstance静态方法获得Calendar的一个对象,此对象默认由当前时间进行初始化,直接来一个简单的实例:

 package com.imooc.collection;

 import java.util.Calendar;

 public class DateAction {

     public static void main(String[] args) {
Calendar c = Calendar.getInstance(); //实例化Calendar对象
int year = c.get(Calendar.YEAR); //通过get方法获得当前年
int month = c.get(Calendar.MONTH) + 1; //月份0-11,需要加1
int day = c.get(Calendar.DAY_OF_MONTH); //日期
int hour = c.get(Calendar.HOUR_OF_DAY); //获取小时
int minute = c.get(Calendar.MINUTE); //获取分钟
int second = c.get(Calendar.SECOND); //获取秒数
System.out.println("当前时间:" + year + "年" + month + "月" + day + "日" + " " + hour +
":" + minute + ":" + second);
} }

这样就打印出结果了:当前时间:2015年9月21日   22:12:13

Calendar还提供了getTime方法,用来获取Date对象,实现Calendar和Date对象的互转,还可以用getTimeInMillis获得1970年01月01日0时0分0秒,到当前时间的毫秒数,大约是Unix时间戳的1000倍

简单代码如下:

 Date date = c.getTime();    //对象转换
Long time = c.getTimeInMillis(); //获取至现在的毫秒数
System.out.println("当前时间:" + date);
System.out.println("当前毫秒数:" + time);

这样就实现了转换

  3、Java数学运算Math类

  Math类也是Java中做运算常用的类,在java.lang包中,这个系统会自动导入,这里简单的记录一下,常用的方法:

  

  直接看一个简单的实例:

 public class MathAction {

     public static void main(String[] args) {
double a = 12.86;
int b = (int) a; //强制类型转换
System.out.println("强制类型转换:" + b);
long c = Math.round(a); //四舍五入
System.out.println("四舍五入:" + c);
double d = Math.floor(a); //返回小于参数a的最大整数
System.out.println("小于a的最大整数:" + d);
double e = Math.ceil(a); //返回大于参数a的最小整数
System.out.println("大于a的最小整数:" + e);
double x = Math.random(); //产生[0,1)区间内的随机浮点数
System.out.println("默认随机数:" + x);
int y = (int) (Math.random()*99); //产生[0,99)区间内的随机整数
System.out.println("0-99之间的随机整数(不包括99):" + y); } }

  很容易理解的例子,效果如下:

  以上就是Java开发中经常用到的类和方法,以上主要就是包装类、时间处理、数学计算这些

Java中必须了解的常用类的更多相关文章

  1. JAVA基础——Java 中必须了解的常用类

    Java中必须了解的常用类 一.包装类 相信各位小伙伴们对基本数据类型都非常熟悉,例如 int.float.double.boolean.char 等.基本数据类型是不具备对象的特性的,比如基本类型不 ...

  2. Java中的集合和常用类

    Java中的常用类: ▪ Object类 ▪ Math类 ▪ String类和StringBuffer类(字符串) ▪ 8种基本类型所对应的包装类 ▪ java.util包中的类——Date类 Obj ...

  3. JAVA中的集合容器操作类

    目录 JAVA中的集合容器操作类 List集合 ArrayList的操作方法说明 LinkedList Stack Set Map Queue 总结 JAVA中的集合容器操作类 Java容器类库总共分 ...

  4. Java中各种集合(字符串类)的线程安全性!!!

    Java中各种集合(字符串类)的线程安全性!!! 一.概念: 线程安全:就是当多线程访问时,采用了加锁的机制:即当一个线程访问该类的某个数据时,会对这个数据进行保护,其他线程不能对其访问,直到该线程读 ...

  5. Java中是否可以调用一个类中的main方法?

    前几天面试的时候,被问到在Java中是否可以调用一个类中的main方法?回来测试了下,答案是可以!代码如下: main1中调用main2的主方法 package org.fiu.test; impor ...

  6. Java中使用 Long 表示枚举类

    Java中使用 Long 表示枚举类 在日常的开发过程中,很多时候我们需要枚举类(enum)来表示对象的各种状态,并且每个状态往往会关联到指定的数字,如: private enum Color { R ...

  7. 讲说问题:|和||的区别以及&和&&的区别。2、Java中的数据类型分几类?基本数据类型有哪些?

    |和||的区别以及&和&&的区别. |或 为或运算 判断为逻辑或 || 为短路或 只有逻辑判断 当左侧为真不再继续判断 &与 为与运算 判断为逻辑与 && ...

  8. java总结第四次//常用类

    六.常用类 主要内容:Object类.String类.Date类.封装类 (一)Object类 1.Object类是所有Java类的根父类 2.如果在类的声明中未使用extends关键字指明其父类,则 ...

  9. java中List接口的实现类 ArrayList,LinkedList,Vector 的区别 list实现类源码分析

    java面试中经常被问到list常用的类以及内部实现机制,平时开发也经常用到list集合类,因此做一个源码级别的分析和比较之间的差异. 首先看一下List接口的的继承关系: list接口继承Colle ...

随机推荐

  1. 使用X-UA-Compatible来设置IE浏览器兼容模式

    文件兼容性用于定义让IE如何编译你的网页.此文件解释文件兼容性,如何指定你网站的文件兼容性模式以及如何判断一个网页该使用的文件模式. 前言 为了帮助确保你的网页在所有未来的IE版本都有一致的外观,IE ...

  2. 【kAriOJ】离散数学春季学期编程测试 1

    A.凯撒密码 题意: 给你k1,k2,和一串明文,一串密文. 明文用k1加密,密文用k2解密. 对于明文要把字母转换成大写字母,非字母全部删除. 额:要考虑到取模可能会变成负数,所以要加一下26再取模 ...

  3. 修改Oracle最大连接数

    1.修改Oracle最大连接数的方法 http://my.oschina.net/shootercn/blog/11193 a.以sysdba身份登陆PL/SQL 或者 Worksheet sqlpl ...

  4. HDU1907 John

    Description Little John is playing very funny game with his younger brother. There is one big box fi ...

  5. hihoCoder 1195 高斯消元.一

    传送门 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho:喂不得了啦,那边便利店的薯片半价了! 小Hi:啥?! 小Ho:那边的便利店在打折促销啊. 小Hi:走走走, ...

  6. python运行报错:urllib2.URLError: <urlopen error [Errno 10061] >

    Traceback (most recent call last): File "F:\adt-bundle-windows-x86_64-20140702\eclipse\workspac ...

  7. 一个cheat命令 == Linux命令小抄大全

    本文介绍一个Linux超级命令,有了这个命令,你就可以开开心心的使用linux上的各种命令了.当你要执行一个linux命令,在这个命令参数选项众多时,你一般怎么做?对,我们大多数人都会去求助man命令 ...

  8. 循序渐进Linux 3:Linux下软件安装与管理

    一.源码安装 ./configuremakemake install 二.RPM包 1. 安装软件包 rpm -i [辅助选项] file1.rpm file2.rpm主选项 -i: install, ...

  9. hibernate的pojo和xml文件

  10. SQL Server 2005导入Excel表问题

    EXCEL导入到SQL Server经常出现“文本被截断,或者一个或多个字符在目标代码页中没有匹配项” 原因: SQL Server的导入导出为了确定数据表的字段类型,取excel文件的前8行来判别. ...