1.落筆緣由
最近又閑下來(lái)了,有時(shí)間翻看以前的東西州弟,繼續(xù)之前的朝花夕拾。
2.數(shù)據(jù)類(lèi)型
(1)基本數(shù)據(jù)類(lèi)型
基本數(shù)據(jù)類(lèi)型有八種,
整型:byte婆翔,short桐经,int ,long
浮點(diǎn)型:float浙滤,double
布爾型:boolean
字符型:char
八種基本數(shù)據(jù)類(lèi)型的字節(jié)數(shù)阴挣,
byte 字節(jié)型:1 byte
short 短整型:2 byte
int 整型:4 byte
long 長(zhǎng)整型:8 byte
float 浮點(diǎn)型(單精度):4 byte
double 浮點(diǎn)型(雙精度):8 byte
boolean 布爾型:1/8 byte(也就是1bit)
char 字符型:2 byte
基本數(shù)據(jù)類(lèi)型轉(zhuǎn)換原則
低精度轉(zhuǎn)高精度單位不會(huì)丟失精度。高精度轉(zhuǎn)低精度會(huì)丟失精度纺腊。
(2)String類(lèi)型(字符串類(lèi)型)
String類(lèi)型不屬于基本數(shù)據(jù)類(lèi)型畔咧,最基礎(chǔ)的差別就是基本數(shù)據(jù)類(lèi)型是保存在棧里,而String是保存在字符串常量池中揖膜。
關(guān)于String類(lèi)型和基本類(lèi)型的相互轉(zhuǎn)換誓沸,可以去查看String常用方法一文。
String壹粟,StringBuffer和StringBuilder區(qū)別拜隧。他們都是用于生成和操作字符串。
String:字符串常量趁仙,它被final修飾洪添,字符串長(zhǎng)度不可變。每次賦值或new都會(huì)在字符串常量池(如果常量池不存在該字符串)生成一個(gè)新的字符串雀费。
String str = "text";
str = "text2"http://這里會(huì)將text2字符串保存到字符串常量池中
String str2 = new String("text");
str2 = "text2"http://這里會(huì)將text2字符串保存到字符串常量池中
StringBuffer:字符串變量(Synchronized干奢,即線程安全)。如果要頻繁對(duì)字符串內(nèi)容進(jìn)行修改盏袄,出于效率考慮最好使用StringBuffer忿峻。
StringBuilder:字符串變量(非線程安全)。在內(nèi)部辕羽,StringBuilder對(duì)象被當(dāng)作是一個(gè)包含字符序列的變長(zhǎng)數(shù)組逛尚。java.lang.StringBuilder是一個(gè)可變的字符序列,是JDK5.0新增的刁愿。此類(lèi)提供一個(gè)與 StringBuffer 兼容的 API绰寞,但不保證同步。該類(lèi)被設(shè)計(jì)用作 StringBuffer 的一個(gè)簡(jiǎn)易替換酌毡,用在字符串緩沖區(qū)被單個(gè)線程使用的時(shí)候克握。
執(zhí)行速度比較:StringBuilder > StringBuffer > String
雖然StringBuilder 比StringBuffer 執(zhí)行快一些,但我們還是要在是否要求線程安全的前提下做出選擇枷踏。
(3)enum類(lèi)型(枚舉類(lèi)型)
1)枚舉可以用來(lái)充當(dāng)常量使用:
private void testColor()
{
for (Color color : Color.values()) {
Log.i("lgy", "name:"+color.name()+" id:"+color.ordinal());
}
}
public enum Color
{
red,yellow,blue,green
}
2)枚舉充當(dāng)常量的同時(shí)用于switch:
public enum Color
{
red,yellow,blue,green
}
private void switchColor(Color color)
{
switch (color) {
case red:
Log.i("lgy", "red");
break;
case yellow:
Log.i("lgy", "yellow");
break;
case blue:
Log.i("lgy", "blue");
break;
case green:
Log.i("lgy", "green");
break;
default:
break;
}
}
在Java7之前菩暗,switch只能支持 byte、short旭蠕、char停团、int或者其對(duì)應(yīng)的封裝類(lèi)以及Enum類(lèi)型旷坦。在Java7中,開(kāi)始對(duì)String支持佑稠。
3)帶參數(shù)的枚舉常量
public enum Color2 {
RED("紅色", 1), GREEN("綠色", 2), BLANK("白色", 3), YELLOW("黃色", 4);
// 成員變量
private String name;
private int index;
// 構(gòu)造方法
private Color2(String name, int index) {
this.name = name;
this.index = index;
}
// 普通方法
public static String getName(int index) {
for (Color2 c : Color2.values()) {
if (c.getIndex() == index) {
return c.name;
}
}
return null;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
}
private void testColor2()
{
for (Color2 color : Color2.values()) {
Log.i("lgy", "name:"+color.name()+" id:"+color.ordinal());
//根據(jù)Color2定義的方法獲取變量
Log.i("lgy", "name2:"+color.getName()+"id2:"+color.getIndex());
}
}
關(guān)于枚舉的詳細(xì)用法可以去查看這篇文章秒梅。
(4)數(shù)組類(lèi)型
Java 語(yǔ)言中提供的數(shù)組是用來(lái)存儲(chǔ)固定大小的同類(lèi)型元素。
1)初始化數(shù)組
private void testArray()
{
//創(chuàng)建數(shù)組舌胶,如果在創(chuàng)建的同時(shí)不初始化數(shù)組則必須指定其大小
int[] intArr = new int[5];
//創(chuàng)建數(shù)組時(shí)捆蜀,不指定數(shù)組大小則必須在創(chuàng)建的同時(shí)初始化數(shù)組
int[] intArr2 = new int[]{1,2,3};
}
2)Array轉(zhuǎn)list
private void testArray()
{
//創(chuàng)建數(shù)組,如果在創(chuàng)建的同時(shí)不初始化數(shù)組則必須指定其大小
int[] intArr = new int[5];
//創(chuàng)建數(shù)組時(shí)幔嫂,不指定數(shù)組大小則必須在創(chuàng)建的同時(shí)初始化數(shù)組
//這里list.size()=1
int[] intArr2 = new int[]{1,2,3};
List list = Arrays.asList(intArr2);
for (int i = 0; i < list.size(); i++) {
Log.i("lgy", ""+list.get(i));
}
//這里list.size()=3,可以看出Arrays.asList(T)操作的是對(duì)象
Integer[] intArr3 = new Integer[]{1,2,3};
List list2 = Arrays.asList(intArr3);
for (int i = 0; i < list2.size(); i++) {
Log.i("lgy", ""+list2.get(i));
}
}
數(shù)組還有很多其他知識(shí)辆它,這里就不講那么多了。