5、Java基本数据类型一、基本类型不牵扯内存分配问题,4类8种: 
(1)整型:int、short、long、byte。             默认值0 
(2)浮点型:float、double。                          默认值0.0 
(3)字符型:char。                                        默认值’\u0000’ 
(4)布尔型:boolean。                                 默认值false 
二、引用类型需要开发者为其分配空间 
引用类型包括类、接口、枚举和数组类型、null类型。 
 
空引用null只能被被转化为引用类型,不能转化成基本类型,因此,不能把一个null值赋给基本类型的变量。 
备注: 
(1)  字符串类型是一个类,即引用类型 (2)  选择原则 a)      如果要表示整数就使用int,表示小数就使用double; b)      如果要描述日期时间数字或者表示文件(或内存)大小用long; c)      如果要实现内容传递或者编码转换使用byte; d)      如果要实现逻辑的控制,可以使用booleam; e)      如果要使用中文,使用char避免中文乱码; f)        如果按照保存范围:byte < int < long < double;  
三、整型1、整型变换新建类Integral.java,整型*整型结果还是整型,运行程序 
    public class Integral { 
    /** 
    *整型 
    *@param args 
    */ 
    public static void main(String[] args) { 
       //2是一个整数(不会改变的量,称之为常量) 
       //程序中任何一个整数对应的类型都是int 
       int num = 2; //声明一个int型变量 
       //num是int型的变量,num*2是int型的常量,也是int型 
       System.out.println(num * 2); 
    } 
} 
       结果输出 
        略 
       结果还是int类型。 
2、整型数据溢出       编辑类Integral.java,数据在最大值+1和最小值-1。运行程序 
    public classIntegral { 
    /**     * 整型     *      * @param args     */     publicstatic voidmain(String[] args) {        intmaxValue = Integer.MAX_VALUE;  // 取得最大值        intminVlaue = Integer.MIN_VALUE;  // 取得最小值        System.out.println(maxValue);        System.out.println(minVlaue);        // maxVlaue属于整型,int变量 + int型常量 = int型        System.out.println(maxValue+1);        System.out.println(minVlaue-1);     } }        结果输出 
        略        结果最大值+1等于最小值了,最小值-1等于最大值。形成了一个循环 
 
3、解决整型数据溢出       唯一解决方案就是用long类型,将maxValue的值赋值给long类型,编辑类Integral.java,运行程序 
public class Integral{     /**     * 整型     *      * @param args     */     publicstatic voidmain(String[] args) {        intmaxValue = Integer.MAX_VALUE; // 取得最大值        intminVlaue = Integer.MIN_VALUE; // 取得最小值        // 程序的执行,都是由等号的右边到左边,这样计算是将maxVlaue的值+1之后,把结果赋值给result,结果还是为最小值        long result1 = maxValue + 1;        System.out.println(result1);          // 方法一:将maxValue强制转换为long之后进行运算,long类型 + int类型常量 = long类型        long result2 = (long)maxValue + 1;        System.out.println(result2);          // 方法二:先将maxValue的值赋值给resultValue之后,结果就是long类型,再+1,就是maxValue+1的值了,就不是最小值了        long result3 = maxValue;        System.out.println(result3 + 1);     } }        结果输出 
    略        这样,整型的数据溢出就不存在了。 
 
4、大类型转小类型       定义一个long类型的数据,用来转换为int类型,编辑类类Integral.java,运行程序 
public class Integral{     /**     * 整型     *      * @param args     */     publicstatic voidmain(String[] args) {        // 任何的整数其默认的类型都是int,如果该整数的值超过了int类型可以保存的数据范围,        // 需要将这个数据明确的表示为long类型,在数据后面加一个“l”或“L”,推荐使用L        longl = 2147483648L;        int result = (int) l; //大的类型变小的类型,必须强制转换        System.out.println(result);       } } 结果输出 
略 因为表示的最大值+1了,所以输出最小值了。 
 
5、数据类型默认值       所有的数据类型都有默认值,但是在主方法中,默认值无效,必须赋值。赋值可以在定义的时候,也可以在使用之前赋值。在使用前赋值,在老版本的JDK中也是会出错,所以最保险的做法是在声明变量的时候,直接赋值。编辑类类Integral.java,运行程序 
public class Integral{     /**     * 整型     *      * @param args     */     publicstatic voidmain(String[] args) {        int num;// 定义一个int类型的变量        num = 10;// 在输出之前进行赋值        System.out.println(num);// 在低版本的JDK中,可能会出错          int i = 20;// 定义一个值为20的int类型的变量,推荐这样使用默认值        System.out.println(i);     } } 结果输出 
略 
 
6、byte数据类型       范围在保存的数据范围-128-127之间,编辑类类Integral.java,运行程序 
public class Integral{     /**     * 整型     *      * @param args     */     publicstatic voidmain(String[] args) {        // 10是int,int范围要大于byte,那么理论上需要进行强制转换;这里不需要,因为其数据量服务byte的要求        byte b = 10;// 10是int类型,在byte范围内        System.out.println(b);            byte b2 = (byte) 128;//b2赋值内容大于127,+1的话,变为最小值 
           System.out.println(b2);            int i = 10; // 10在int范围内            byte b3 = (byte) i; // 需要强制转换,            System.out.println(b3);     } }        结果输出 
              略 
       如果赋值的byte的范围,就需要进行强制转换。如果将int值赋值给byte,那么要求只能够是int常量,不能是int变量。如果需要,则需将byte强制转换为int类型。 
 
 
四、浮点型       如果需要表示小数,则需要使用浮点型。默认类型是double类型。新建类FloatType.java,编辑类FloatType.java,运行base方法 
public classFloatType {     /**     * 浮点型     *      * @param args     */     publicstatic voidmain(String[] args) {        base();// 运行base方法 
    }     private static void base() {        double d = 5.2; // 这是一个小数,默认类型为double        // d是double类型 * int类型常量 = double类型        // num* 2.0(由int类型变为double类型)        System.out.println(d * 2);     } } 结果输出 
略        double类型保存的数字范围是最大的,能保存最大的有意义的数字。如果不能确定你需要保存的数字范围,可以选择使用double。也可以使用float表示小数,其范围要小于double,且默认的是double,所以如果要直接声明float变量,可以在数字后加一个“F”或“f”。新建方法floatBase();运行程序 
        privatestatic voidfloatBase() { 
       floatf1 = 1.5f;        // float类型 * int类型常量 = float类型        System.out.println(f1 * 2);          System.out.println(f1 * f1);          System.out.println(1.1* 1.1); //传统BUG         }        结果输出 
              略 
       这个bug一直存在,可以保留两位小数即可。 
 
       Int类型的计算,有时会存在小数,新建方法intCalculation(),运行程序 
        private staticvoid intCalculation() {            int i1 =20;            int i2 = 6;            // int类型 / int类型 = int类型            System.out.println(i1/ i2);            // 如果需要准确的计算,那么至少保证一个类型是double或者是float类型            System.out.println((double)i1 / i2);         }        结果输出 
              略 
       Java进行除法计算的时候,都需要注意数据类型。 
 
五、字符型       在项目中,用概念比较多,真正使用到的情况比较少。使用char进行表示,用单引号来声明变量的内容,而且字符型可以和int类型进行相互转换。新建方法charBase(),运行程序 
public class CharType{     /**     * 字符型     *      * @param args     */     publicstatic voidmain(String[] args) {        charBase();     }       /**     * 字符型的定义     */     private static void charBase() {        char c = 'A'; // 定义一个char类型        System.out.println(c);        int i = c;// 将char赋值给int类型        System.out.println(i);     } }        结果输出 
              略 
       常用范围 
              大写字母            A-Z              (65<A> - 90<Z>) 
              小写字母            a-z        (97<a> - 122<z>) 
              字符数字            0-9        (48<0> -57<9>) 
       中间相差32长度,实现大写字母和小写字母之间的相互转换。字符0和数字0是两个概念。新建方法charChange(),运行程序 
        privatestatic voidcharChange() { 
       charc = 'A' +32;// 将A转换为a        System.out.println(c);          charc2 = '0';        // 字符变量 + int常量 = int类型        int i = c2; // 将字符变为int类型        System.out.println(i);          // 需要将int类型的内容转换为char类型,强制转化即可        charc3 = (char)i;// 强制转换        System.out.println(c3);         }        结果输出 
              略 
       所以字符0等于整型的48。各种语言都有相似的编码,称之为ASCII码,Java中使用的是UNICODE编码,UNICODE所包含ASCII码,可以保存任何的文字信息,包括中文。新建方法charUnicode(),运行程序 
        privatestatic voidcharUnicode() { 
       char c = '彭';// 定义一个字符        int i = c;// 将字符转换为int类型        System.out.println(i);         }        结果输出 
              略 
       所以在Java中中文‘彭’字存放的数字表示为24429。 
 
六、布尔型       布尔是一位数学家的名字,发明了两个单词,true和false,用来表示计算的逻辑结果。条件满足返回true,条件冲突返回false,新建类BooleanType.class,运行程序 
public classBooleanType {       publicstatic voidmain(String[] args) {        booleanBase();     }       /**     * 基本介绍     */     privatestatic voidbooleanBase() {        booleanb1 = 10 > 2; //true 表示条件满足        boolean b2 = 10 < 2;// false 表示条件不满足        if(b1) {            System.out.println("Hello enlern");        }     } }        结构输出 
              略 
       在其他语言中,如果没有boolean类型,就用数字表示,比如0表示false,1表示true。 
 
七、字符串       char只能表示单一字符,但是多个字符就需要String来表示。String并不是基本类型,是一个引用数据类型。但是它可以按照基本类型的使用模式。String上可以使用“+”,作用是表示两个字符串的连接。新建类StringType.java,运行程序 
public classStringType {     /**     * 字符串String     *      * @param args     */     publicstatic voidmain(String[] args) {        baseString();     }       /**     * 基本概念     */     privatestatic voidbaseString() {        String s1= "shanghai"; // 定义一个字符串        String s2= "enlern";// 定义一个字符串        System.out.println(s1 + s2);     }   }        结果输出 
              略 
       如果既有字符串相加,也有数字相加,新建方法stringSum(),运行程序 
        /** 
        *字符串相加,数字相加         */     private static void stringSum() {        int i1 = 10;// 定义一个int类型        int i2 = 4;// 定一个int类型        System.out.println("sum = " + i1+ i2);         }        结果输出 
              略 
       此时不是数学计算,是字符串相加了。一旦基本类型与String相加操作,都会变成String字符串的拼接。如果要表示数字想“+”的话,可以使用括号解决。在字符串相加中有几个特殊的字符,为转义字符。如下 
              \\反斜杠  
\t 间隔 ('\u0009') 
\n 换行 ('\u000A') 
\r 回车 ('\u000D') 
新建stringSymbol(),运行程序 
        /** 
        *转义字符         */     private staticvoid stringSymbol() { System.out.println("熊孩子\n\"用脚猛蹬电梯门\"下一秒门爆裂冒出巨大白烟");         } 结果输出               略 
       可以使用转移字符对字符串进行格式化。 
 
 |