您的位置:首页 > 编程语言 > Java开发

【JAVA300】6-10 笔记

2017-07-24 11:05 274 查看
6_标识符_unicode和GBK_各种字符集的关系
标识符:
必须以字母,下划线_,美元符$开头。
其他部分可以是字母,下划线_,美元符$和数字。(包含特殊符号会出错)
java内部采用了Unicode字符集,采用中文一般不会出错。
大小写有区分,但长度无限制。

不可以包含#关键字
不可以数字开头
不可以

字符集简介:
根:ISO8859-1:西欧字符集
(一线)BIG5:台湾的大五码,表示繁体汉字
(二线)GB2312:大陆使用最早,最广的简体简体字符集
(二线)GBK:GB2312的扩展,可以表示繁体中文
(二线)GB18030:GBK的扩展,可以表示各个民族字符
(三线)Unicode:国际通用字符集(UTF-8。UTF-16)

7_整数类型_进制转换_编程中的L问题
基本数据类型:
数值型(整数byte,short,int,long。浮点float,double)
字符型(char)
布尔型(boolean)

引用数据类型:
类(class)
接口(interface)
数组。

byte:1字节:-128到127
short:2字节:-32768到32767(-2^15到2^15-1)
int:4字节:约正负21乙(-2^31到2^31-1)
long:8字节:(-2^63到2^63-1)

●●●●●
int:integer:整数

进制:
八进制:0开头(如010,为8)
十六进制:0x开头(如0x10,为16)

整型常量默认为int
代码的L用大写,易于区分。

代码:
public class TestDataType{

    public static void main(string[] args){
        int a=10;
        int a2=010;
        int a3=0x10;
        System.out.println(a);
        System.out.println(a2);
        System.out.println(a3);
        System.out.println(Integer.toBinaryString(a));         //转为2进制为字符串
        System.out.println(Integer.toOctalString(a));           //转为8进制为字符串
        System.out.println(Integer.toHexString(a));             //转为16进制为字符串

        int a5=10;
        long a6=200;
        byte b2=100;//如果数据的大小没超过byte/short/char的表述范围,则可以自动转型(即int转为该类型)

        long a7=2200000000L; //如果数据的大小没超过long的表述范围,但超过int表述范围则在数尾加(大写L或小写l)转型。
    }
}

输出结果:
10
8
16
1010
12
a
10
200
100
2200000000

8_浮点数_浮点数误差问题

float:单精浮点:4字节:+-3.4*10^38:位数精确到7位有效数字
double:双精浮点:8字节:+-1.7*10^308:位数精确到15位有效数字

科学计数法:314e2=31400   314e-2=3.14
浮点数默认为double,要用float数尾加f
浮点数有误差(精确的BigDecimal大的小数·,BigInteger大的整数)

代码:
public class TestFloatType{
    public static void main(String[] args){
        double d=3.14;                      //浮点数常量默认类型是double.
        float f=6.28F;                         //直接转化可能损失精度
        double d2=314e-2;
        System.out.println(d2);

        float f1=0.1f;
        double d2=1.0/10;
        System.out.println(f1==d2);  //双等号比较f1和d2
    }
}

输出结果:
3.14
flase

9_char_字符串入门_boolean
char占两个字节,
是来表示Unicode编码中的字符,Unicode有65536个字符,
char是在0-65535之间,运算时当作整数,
反之也可以数字转化成char。

boolean只占一位.不是一个字节。
新手:if(is==trun&&done==false)
以后:if(whether&&!done)

转义符号:
\' 单引号
\"双引号  
\\ 反斜杠
\r 回车 
\n 换行 
\f 走纸换页 
\t 横向跳格 
\b 退格 

点的转义:. ==> u002E 
美元符号的转义:$ ==> u0024 
乘方符号的转义:^ ==> u005E 
左大括号的转义:{ ==> u007B 
左方括号的转义:[ ==> u005B 
左圆括号的转义:( ==> u0028 
竖线的转义:| ==> u007C 
右圆括号的转义:) ==> u0029 
星号的转义:* ==> u002A 
加号的转义:+ ==> u002B 
问号的转义:? ==> u003F 
反斜杠的转义: ==> u005C 

代码:
public class TestCharType{

    public static void main(String[] args){
        char c1 ='a';
        char c2 ='尚';                    //unicode  2:0-65535
        char c3 ='\'';                     //'\''输出的是','\\'输出的是\
        System.out.print(c1);        //不换行
        System.out.println(c2);     //换行

        char c4 = 'a';
        int i = c4 + 2;    
        char c5 = (char)i;               //强制转型,因为整数是4个字节,char是2个字节
        System.ot.println(i);
        System.ot.println(c5);

        //循环打印a-z
        for(int z=0;z<26;z++){
            char temp = (char)(c4+z);
            System.out.print(temp);
        }
        
        //java里面的字符串,是定义成:String类了。
        String str = "safagsgsadgsdgdsgaf";
        String.out.println("\n"+str);

        boolean b =trun;                         //false
        if(b){                                              // if(b==trun){  
            System.out.println("true")
            
            }
    } 
}

输出结果:
a尚
99
c
abcdefghijklnmopqrstuvwxyz
safagsgsadgsdgdsgaf
true

10_基本数据类型自动转换_强制转型_类型提升问题
自动转化:容量小的数据类型可以自动转化为容量大的数据类型。(表示的范围)
特例:整型常量直接赋值给byte,short,char等类型变量,只要不超过其表数范围
如图,黑色实线为无数据丢失自动转化,红色为可能丢失精度自动转化。



代码:
public class TestCastType{

    public static void main(String[] args){
        byte b = 123;                           //在128之内自动转型 
        //byte b2 = 300;                      //在128之外报错
        //char c = -3;                              
        char c2 = 'a';      
        int i = c2;      
        long d01 = 123213;      
        float f = d01;      
    
        //测试强制转型                              
        int i2 = -100;      
        char c3 = (char)i2;      
        System.out.println(c3);            //-100超过char的表数范围,所以转换成完全不同的值,无意义的值。
       
       //表达式中的类型提升问题     
        int a = 3;      
        long b= 4;      
        double d = 5.3;  
        int c = (int)(a+b);                      //做所有的二元运算符(+-/*&),都会有类型提升问题
        float f = (float)(a+b);
          
        int money = 1000000000;         //10亿
        int years = 20;
        int total =money*years;             //返回的是负数
        System.out.println(total);
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: