第3章 java的基本程序设计结构

数据类型

整型

public class Test_demo1 {
    public static void main(String[] args) {
        int x=0x15;//十六进制
        int y=010;//八进制
//        int z=123213l;//长整型  报错
//        long z=4000000000000;不加L报错
        long z=4000000000000l;
        long a=4_000_000_000_000l;//加下划线更加容易读懂,编译器会自动除去这些下划线 java7之后的功能
        byte b=0b11;
        byte c=0B11;
        System.out.println(x);
        System.out.println(y);
        System.out.println(z);
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);


    }
}

结果:
21
8
4000000000000
4000000000000
3
3


浮点类型

double 表示这种类型的数值精度是float类型的两倍。绝大部分程序都采用double类型。
float类型的数值有一个后缀F或f。没有后缀F的浮点数值都默认为double类型。也可以在浮点数值后面添加D或d


public class Test_demo1 {
    public static void main(String[] args) {
//        float x=123.123;//有小数点 没加f报错  原因:没有后缀F的浮点数值都默认为double类型 所以这里123.123是double类型
        float y=123;//没小数点,没加f,不报错
        float z=123.123f;//有小数点,加f,不报错
        double a=123.123;//有小数点,不加f,不报错

        System.out.println(y);
        System.out.println(z);
        System.out.println(a);

    }
}
结果:
123.0
123.123
123.123

浮点数有三个特殊的浮点数值:
正无穷大 Double.POSITIVE_INFINITY
负无穷大 Double.NEGATIVE_INFINITY
NaN(不是一个数字) Double.NaN
例如:一个正整数除以0的结果是正无穷大。计算0/0或者负数的平方根结果为NaN。

public class Test_demo1 {
    public static void main(String[] args) {
        System.out.println(1.0/0);
        System.out.println(0.0/0);
        System.out.println(-1.0 / 0);
    }
}
Infinity
NaN
-Infinity



public class Test_demo1 {
    public static void main(String[] args) {
        //如果不是浮点类型
        System.out.println(1/0);
        System.out.println(0/0);
        System.out.println(-1/0);
    }
}

Exception in thread "main" java.lang.ArithmeticException: / by zero
	at com.interview.Test_demo1.main(Test_demo1.java:5)



if(x==Double.NaN)//is never true
if(Double.isNaN(x)//check whether x is "not a number"

浮点数值不适合用于无法接受舍入误差的金融计算中。
比如2.0-1.1=0.899999999。
原因是因为浮点数值采用二进制系统表示,而在二进制系统中无法精确的表达1/10。就等于十进制无法精确表达1/3一样。原因
如果不允许有任何舍入误差,就需要使用BigDecimal类。

char

char类型原本适用于表示单个字符。
不过,现在,有些unicode字符可以用一个char值表示,另一些需要两个char值。

unicode和char类型

不同的标准:
- 美国的ASCII
- 西欧的ISO 8859-1
- 俄罗斯的KOI-8
- 中国的GB 18030 BIG-5
产生的问题
- 不同编码方案下,一个给定的代码值可能对应不同的字母
- 采用大写字符集的语言其编码长度有可能不同。

解决方案:采用16位 即两个字节的Unicode。不过现在16位已经满足不了所有Unicode的需要了。

变量

变量初始化

声明一个变量之后,必须用赋值语句对变量进行显示初始化,千万不要用未初始化的变量。

public class Test_demo1 {
    public static void main(String[] args) {
        int x;
        System.out.println(x);
    }
}

Error:(6, 28) java: 可能尚未初始化变量x


public  class  Test_demo1{
    int x;
    public static void main(String[] args) {
        Test_demo1 demo1=new Test_demo1();
        System.out.println(demo1.x);
    }
}

0//在类中field会自动赋予默认值,没有设置访问范围的默认为default,范围是: 在同一包内可见,不使用任何修饰符。

在java中,不区分变量的声明和定义

常量

利用final关键字
final修饰的变量只能赋值一次。习惯上,常量名要用全大写。

运算符

结合赋值和运算符

如果x是int类型
x+=3.5
x=(int)(x+3.5)
(强制类型转换)

posted @ 2020-02-08 21:25  zhuob  阅读(139)  评论(0)    收藏  举报