摘要:包裝類基本數(shù)據(jù)類型如等。它們并不具備對(duì)象的特性,比如不能調(diào)用方法。為了讓基本數(shù)據(jù)類型也能具有對(duì)象的特性,為每個(gè)基本數(shù)據(jù)類型提供了包裝類。
包裝類
基本數(shù)據(jù)類型:如 int、float、double、boolean、char 等。它們并不具備對(duì)象的特性,比如不能調(diào)用方法。為了讓基本數(shù)據(jù)類型也能具有對(duì)象的特性,java為每個(gè)基本數(shù)據(jù)類型提供了包裝類。
基本類型和包裝類之間的對(duì)應(yīng)關(guān)系:
Integer
Integer 包裝類的構(gòu)造方法:
int a = 10; Integer m = new Integer(22); Integer n = new Integer("100");
Integer包裝類的方法
// 定義int類型變量,值為86 int score1 = 86; // 創(chuàng)建Integer包裝類對(duì)象,表示變量score1的值 Integer score2=new Integer(score1); // 將Integer包裝類轉(zhuǎn)換為double類型 double score3=score2.doubleValue(); // 將Integer包裝類轉(zhuǎn)換為float類型 float score4=score2.floatValue(); // 將Integer包裝類轉(zhuǎn)換為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);Java 中基本類型和包裝類之間的轉(zhuǎn)換
基本類型和包裝類之間經(jīng)常需要互相轉(zhuǎn)換
在 JDK1.5 引入自動(dòng)裝箱和拆箱的機(jī)制后,包裝類和基本類型之間的轉(zhuǎn)換就更加輕松便利了
裝箱
把【基本類型】轉(zhuǎn)換成【包裝類】,使其具有對(duì)象的性質(zhì),又可分為【手動(dòng)裝箱】和【自動(dòng)裝箱】。
int i = 10; Integer x = new Integer(i); // 手動(dòng)包裝 Integer y = i; // 自動(dòng)包裝
拆箱
和裝箱相反,把包裝類對(duì)象轉(zhuǎn)換成基本類型的值,又可分為手動(dòng)拆箱和自動(dòng)拆箱.
Integer j = new Integer(9); int m = j.intValue(); // 手動(dòng)拆箱 int n = j; // 自動(dòng)拆箱
// 定義double類型變量 double a = 91.5; // 手動(dòng)裝箱 Double b = new Double(a); // 自動(dòng)裝箱 Double c = a; System.out.println("裝箱后的結(jié)果為:" + b + "和" + c); // 定義一個(gè)Double包裝類對(duì)象,值為8 Double d = new Double(87.0); // 手動(dòng)拆箱 double e = d.doubleValue(); // 自動(dòng)拆箱 double f = d; System.out.println("拆箱后的結(jié)果為:" + e + "和" + f);Java 中基本類型和字符串之間的轉(zhuǎn)換
基本數(shù)據(jù) => 字符串
使用包裝類的toString()方法
使用String類的valueOf()
用一個(gè)空字符串加上基本類型,得到的就是基本類型數(shù)據(jù)對(duì)應(yīng)的字符串
int c = 10; String str1 = Integer.toString(c); String str2 = String.valueOf(c); String str3 = c + "";
字符串 => 基本數(shù)據(jù)
調(diào)用包裝類的 parseXxx 靜態(tài)方法
調(diào)用包裝類的 valueOf() 方法轉(zhuǎn)換為基本類型的包裝類,會(huì)自動(dòng)拆箱
String str = "8"; int d = Integer.parseInt(str); int e = Integer.valueOf(str);
double m = 78.5; //將基本類型轉(zhuǎn)換為字符串 String str1 = String.valueOf(m); ; //String str1 = String.toString(m); System.out.println("m 轉(zhuǎn)換為String型后與整數(shù)20的求和結(jié)果為: "+(str1+20)); String str = "180.20"; // 將字符串轉(zhuǎn)換為基本類型 Double a = Double.valueOf(str) ; //Double a = Double.parseDouble(str); System.out.println("str 轉(zhuǎn)換為double型后與整數(shù)20的求和結(jié)果為: "+(a+20));
ps: 其他基本類型與字符串的相互轉(zhuǎn)化這里不再一一列出,方法都類似Date
在程序開(kāi)發(fā)中,經(jīng)常需要處理日期和時(shí)間的相關(guān)數(shù)據(jù),此時(shí)我們可以使用 java.util 包中的 Date 類。
使用 Date 類的默認(rèn)無(wú)參構(gòu)造方法創(chuàng)建出的對(duì)象就代表當(dāng)前時(shí)間,我們可以直接輸出 Date 對(duì)象顯示當(dāng)前的時(shí)間,顯示的結(jié)果如下:
按指定的格式進(jìn)行顯示,如 2014-06-11 09:22:30 ,那該怎么做呢
Date d5 = new Date(); System.out.println(d5); // Fri Aug 17 22:03:51 CST 2018 SimpleDateFormat d1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String today = d1.format(d5); // 2018-08-18 07:29:38 System.out.println(today); // 使用format()方法將日期轉(zhuǎn)換為指定格式的文本 SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 HH時(shí)mm分ss秒"); SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd HH:mm"); SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 創(chuàng)建Date對(duì)象,表示當(dāng)前時(shí)間 Date now =new Date(); // 調(diào)用format()方法,將日期轉(zhuǎn)換為字符串并輸出 System.out.println(sdf1.format(now)); //2018年08月18日 07時(shí)29分38秒 System.out.println(sdf2.format(now)); //2018/08/18 07:29 System.out.println(sdf3.format(now)); //2018-08-18 07:29:38
使用 parse() 方法將文本轉(zhuǎn)換為日期
// 使用parse()方法將文本轉(zhuǎn)換為日期 String d = "2018年08月10日 10:29:38"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); // 調(diào)用parse()方法,將字符串轉(zhuǎn)換為日期 Date date = sdf.parse(d); System.out.println(date);
完整代碼
package myDate; import java.text.SimpleDateFormat; // 使用 Date 類時(shí)需要導(dǎo)入 java.util 包,使用 SimpleDateFormat 時(shí)需要導(dǎo)入 java.text 包 import java.text.ParseException; // 調(diào)用 SimpleDateFormat 對(duì)象的 parse() 方法時(shí)可能會(huì)出現(xiàn)轉(zhuǎn)換異常,即 ParseException ,因此需要進(jìn)行異常處理 import java.util.Date; public class test { public static void main(String[] args) throws ParseException{ // TODO Auto-generated method stub Date d5 = new Date(); System.out.println(d5); // Fri Aug 17 22:03:51 CST 2018 SimpleDateFormat d1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String today = d1.format(d5); // 2018-08-18 07:29:38 System.out.println(today); // 使用format()方法將日期轉(zhuǎn)換為指定格式的文本 SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 HH時(shí)mm分ss秒"); SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd HH:mm"); SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 創(chuàng)建Date對(duì)象,表示當(dāng)前時(shí)間 Date now =new Date(); // 調(diào)用format()方法,將日期轉(zhuǎn)換為字符串并輸出 System.out.println(sdf1.format(now)); //2018年08月18日 07時(shí)29分38秒 System.out.println(sdf2.format(now)); //2018/08/18 07:29 System.out.println(sdf3.format(now)); //2018-08-18 07:29:38 // 使用parse()方法將文本轉(zhuǎn)換為日期 String d = "2018年08月10日 10:29:38"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); // 調(diào)用parse()方法,將字符串轉(zhuǎn)換為日期 Date date = sdf.parse(d); System.out.println(date); } }Calendar類
Date 類最主要的作用就是獲得當(dāng)前時(shí)間,同時(shí)這個(gè)類里面也具有設(shè)置時(shí)間以及一些其他的功能,但是由于本身設(shè)計(jì)的問(wèn)題,這些方法卻遭到眾多批評(píng),不建議使用,更推薦使用 Calendar 類進(jìn)行時(shí)間和日期的處理。
package com; import java.util.Calendar; public class test { public static void main(String [] args) { Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH)+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("當(dāng)前時(shí)間:"+ year +"年"+month+"月"+day+"日 "+hour+": "+ minute+": "+second+""); } }
package com; import java.util.Date; import java.util.Calendar; public class test { public static void main(String [] args) { Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH)+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("當(dāng)前時(shí)間:"+ year +"年"+month+"月"+day+"日 "+hour+": "+ minute+": "+second+""); Date date = c.getTime(); // 將calendar對(duì)象轉(zhuǎn)換為date對(duì)象 System.out.println(date); Long time = c.getTimeInMillis(); //獲得當(dāng)前毫秒數(shù) System.out.println(time);// 1534553739595 } }Math類
使用 Math 類操作數(shù)據(jù)
Math 類位于 java.lang 包中,包含用于執(zhí)行基本數(shù)學(xué)運(yùn)算的方法, Math 類的所有方法都是靜態(tài)方法,所以使用該類中的方法時(shí),可以直接使用類名.方法名,如: Math.round();
package com.math; public class test { public static void main(String[] args) { // TODO Auto-generated method stub double a = 12.81; int b = (int)a; // 強(qiáng)制類型轉(zhuǎn)換 System.out.println("強(qiáng)制類型轉(zhuǎn)換"+b); long c = Math.round(a); System.out.println("四舍五入"+c); double d = Math.floor(a); System.out.println("向下取整floor"+d); double e = Math.ceil(a); System.out.println("向上取整ceil"+e); double x = Math.random(); System.out.println("隨機(jī)數(shù)[0,1)"+x); int f = (int) (Math.random() * 99); System.out.println("隨機(jī)數(shù)[0,99)"+f); // 定義一個(gè)整型數(shù)組,長(zhǎng)度為10 int[] nums = new int [10]; //通過(guò)循環(huán)給數(shù)組賦值 for (int i = 0; i < nums.length; i++) { // 產(chǎn)生10以內(nèi)的隨機(jī)數(shù) int n = (int) (Math.random() * 10); nums[i] = n;// 為元素賦值 } // 使用foreach循環(huán)輸出數(shù)組中的元素 for ( int num : nums ) { System.out.print(num + " "); } } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/76780.html
摘要:讓一切變得更簡(jiǎn)單抽象化深入封裝算法塊,這便是設(shè)計(jì)模式當(dāng)中的一種模式模板方法模式。定義模板方法模式在一個(gè)方法中定義一個(gè)算法的框架,而將一些步驟延遲到子類中。 讓一切變得更簡(jiǎn)單抽象化 深入封裝算法塊,這便是設(shè)計(jì)模式當(dāng)中的一種模式:模板方法模式。 我們先來(lái)看看下面兩個(gè)茶和咖啡配方showImg(https://segmentfault.com/img/bVV4kS?w=1248&h=...
摘要:內(nèi)存分配解析四方法執(zhí)行完畢,立即釋放局部變量所占用的棧空間。內(nèi)存分配解析五調(diào)用對(duì)象的方法,以實(shí)例為參數(shù)。堆和棧的小結(jié)以上就是程序運(yùn)行時(shí)內(nèi)存分配的大致情況。 前言 java中有很多類型的變量、靜態(tài)變量、全局變量及對(duì)象等,這些變量在java運(yùn)行的時(shí)候到底是如何分配內(nèi)存的呢?接下來(lái)有必要對(duì)此進(jìn)行一些探究。 基本知識(shí)概念: (1)寄存器:最快的存儲(chǔ)區(qū), 由編譯器根據(jù)需求進(jìn)行分配,我們?cè)诔绦?..
摘要:我的是忙碌的一年,從年初備戰(zhàn)實(shí)習(xí)春招,年三十都在死磕源碼,三月份經(jīng)歷了阿里五次面試,四月順利收到實(shí)習(xí)。因?yàn)槲倚睦砗芮宄业哪繕?biāo)是阿里。所以在收到阿里之后的那晚,我重新規(guī)劃了接下來(lái)的學(xué)習(xí)計(jì)劃,將我的短期目標(biāo)更新成拿下阿里轉(zhuǎn)正。 我的2017是忙碌的一年,從年初備戰(zhàn)實(shí)習(xí)春招,年三十都在死磕JDK源碼,三月份經(jīng)歷了阿里五次面試,四月順利收到實(shí)習(xí)offer。然后五月懷著忐忑的心情開(kāi)始了螞蟻金...
摘要:作為面試官,我是如何甄別應(yīng)聘者的包裝程度語(yǔ)言和等其他語(yǔ)言的對(duì)比分析和主從復(fù)制的原理詳解和持久化的原理是什么面試中經(jīng)常被問(wèn)到的持久化與恢復(fù)實(shí)現(xiàn)故障恢復(fù)自動(dòng)化詳解哨兵技術(shù)查漏補(bǔ)缺最易錯(cuò)過(guò)的技術(shù)要點(diǎn)大掃盲意外宕機(jī)不難解決,但你真的懂?dāng)?shù)據(jù)恢復(fù)嗎每秒 作為面試官,我是如何甄別應(yīng)聘者的包裝程度Go語(yǔ)言和Java、python等其他語(yǔ)言的對(duì)比分析 Redis和MySQL Redis:主從復(fù)制的原理詳...
閱讀 5030·2021-09-07 09:58
閱讀 781·2019-08-30 15:55
閱讀 2909·2019-08-30 15:55
閱讀 915·2019-08-30 15:53
閱讀 1549·2019-08-29 12:57
閱讀 1796·2019-08-26 13:46
閱讀 559·2019-08-26 11:00
閱讀 3658·2019-08-23 15:42