java是一种强雷型语言,每个变量都必须声明其数据类型。

Java的数据类型可分为两大类:基本数据类型(primitive data type)和引用数据类型(reference data type)。

基本数据类型分为:数据型———整数类型(byte,short,int,long)和浮点类型(float,double)

                               字符型(char)

                                布尔型(boolean)

引用数据类型:类(class)

                        接口(interface)

                         数组PS:巧妙记忆:除了基本数据类型以外的所有类型都属于引用数据类型,本章重点:基本数据类型

一、数据型

(1)整数类型(byte,short,int,long):

常数:

十进制整数,如:99,-500,0

八进制整数,要求以0开头

十六进制整数,要求0x或者0X开头

二进制:要求0b或者0X开头

变量:

一个字节代表8位数

类型

占用存储空间

表数范围

byte

1字节

-2^7~2^7-1(-128~127)

short

2字节

-2^15~2^15-1(-32768~32767)

int

4字节

-2^35~-2^35-1(-2147483648~2147483647)约21亿

long

8字节

-2^63~2^63-1

public class testVar03 {
    public static void main(String[] args){
        //定义整数类型的变量:
        //给变量赋值的时候,只可以为不同进制的:
        int num1 = 12;//默认情况下赋值就是十进制的情况
        System.out.println(num1);
        int num2 = 012;//前面加上0,这个值就是八进制的
        System.out.println(num2);
        int num3 = 0x12;//前面加上0x或者0X,这个值就是十六进制的
        System.out.println(num3);
        int num4 = 0b10;//前面加上0b或者0B,这个值就是二进制的
        System.out.println(num4);

        //定义byte类型的变量:
        byte b = 126;//定义了一个byte类型的变量,名字叫b,赋值为12
        System.out.println(b);
        //注意:超范围的赋值会报错。
        short s = 30000;
        System.out.println(s);
        int i = 1234;
        System.out.println(i);
        //整数类型默认就是int类型的,所以12345678910是一个int类型的数,对于int类型来说,他超出范围了
        //要想把一个输给long类型变量,那么后面加上L(推荐)或者l就可以了
        //注意:只有这个数超出int类型的范围了后面才加上L,否则无需加上L也可以赋值给long类型

(2)浮点类型(float,double):

常量:

public class testVar04 {
    public static void main (String[] args){
        //浮点类型的常量有两种形式:
        //十进制形式:
        double num1 = 3.14;
        System.out.println(num1);
        //科学计数法形式:
        double num2 = 314E-2;
        System.out.println(num2);

        //

    }
}

变量:

float类型又被称作单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难满足需求。
而double表示这种类型的数值精度约是float类型的两倍,又被称作双精度类型,绝大部分应用程序都采用double类型 float类型的数值有一个后缀F或者f,没有后缀F/f的浮点数值默认为double类型。

类型

占用存储空间

表数范围

float

4字节

大约士3.402 823 47E+38P(有效位数为6-7位左右)

double

8字节

 大约士1.797 693 134 862 315 70E+308(有效位数为15-16位左石)

 PS:有效数字指的是从左开始第一个不为0的数到最后一个数

public class testVar04 {
    public static void main (String[] args){     
        //浮点类型的变量:
        //注意:浮点型默认是double类型的,要想将一个double类型的数赋给float类型,必须后面加上F或者f
        float f1 =3.1423456789876F;
        System.out.println(f1);
        //注意:double类型后面可以加D或者d,但是一般都省略不写
        double d1 = 3.1423456789876;
        System.out.println(d1);

        //注意:我们最好不要进行浮点类型的比较:
        float f2 = 0.3F;
        double d2 = 0.3;
        System.out.println(f2==d2);
        /*
        区别:
               = 赋值运算: 将等号右侧的值赋给等号左侧
               ==   判断==左右两侧的值是否相等 :结果要么相等 要么不相等
               ==运算符的结果就是要么是true,要么是false
         */



    }
}

二、字符类型(char)

【1】编码和字符集

Unicode :国际通用字符集,融合了目前人类使用的所有字符。为每个字符分配唯一字符码。

推出了UTF标准:

三种编码方案:UTF-8 , UTF-16 , UTF-32

我们最常用的为UTF-8

Java中使用单引号来表示字符常量,字符型在内存中占2个字节。
char类型用来表示在Unicode编码表中的字符。Unicode编码被设计用来处理各种语言的文字,它占2个字节,可允许有65536个字符

【2】转义字符:

转义符

含义

Unicode

\b

退格

\u0008

\n

换行

\u000a

\r

回车

\u000b

\t

制表符

\u0009

\"

双引号

\u0022

\'

单引号

\u0027

\\

反斜杠

\u005c

【3】ASCll表

 

Java有那些基本数据类型 java基本数据类型包括哪些_Java有那些基本数据类型

代码1

public class textVar05 {
    public static void main(String[] args){
        //定义字符类型的变量:
        char ch1 = 'a';
        System.out.println(ch1);
        char ch2 = 'A';
        System.out.println(ch2);
        char ch3 = '4';
        System.out.println(ch3);
        char ch4 = '中';
        System.out.println(ch4);
        char ch5 = '!';
        System.out.println(ch5);
        //java中无论:字母,数字,符号,中文都是字符类型中的常量,都占2个字节。
        char ch6 = ' ';
        System.out.println(ch6);
        //字符类型:单引号引起来的单个字符
        System.out.println("------------------------");
        /*
        转义字符:
        \将后面普通字符转换为特殊含义
         */
        char ch7 = '\n';
        System.out.println("aaa"+ch7+"bbb");

        System.out.println("aaa\nbbb");//\n换行

        System.out.println("aaaaaaa\tbbb");//\t 制表符

        System.out.println("aaa\bbbb"); //\b 向前退一格

        System.out.println("aaa\rbbb"); // \r将光标到本行开头(回车)

        System.out.println("\"java\"");
        System.out.println("\'java\'");
        System.out.println("\\java\\");// \"将双引号原样输出 \'将单引号原样输出 \\将\原样输出

    }

}

代码2

public class textVar06 {
    public static void main (String[] args){
        char ch1 = 'A';
        System.out.println(ch1);//A
        System.out.println(ch1+90);//155
        System.out.println(155-ch1);//90
        //char类型我们看到的样子就是它本身字面常量,但是底层在进行计算的时候,实际上是按照一个码进行计算的。
        //这个码就是ASCII
        //之前说char类型是按照Unicode码表进行存储的(Unicode兼容了ASCII码,Unicode的前128位置ASCII)

        char ch2 = '中';
        System.out.println(ch2);
        System.out.println(ch2+90);//20103
        System.out.println(20103-ch2);//90

        int num1 = (ch2);
        System.out.println(num1);//20013

        char ch = (char)20013;
        System.out.println(ch);

        int num2 = '中';
        char ch5 = 20013;
        System.out.println(ch5);

        //面试题
        char ch6 = '2'+2;
        System.out.println(ch6);//'4'--->4

    }
}

三、布尔类型(boolean)

boolean类型有两个常量值,true和false,在内存中占一位(不是一个字节),不可以使用0或非0的整数替代true和false,这点和C语言不同。boolean 类型用来判断逻辑条件,一般用于程序流程控制。

public class textVar07 {
    public static void main(String[] args){
        //创建一个布尔类型的变量:
        boolean flag1 = true;
        System.out.println(flag1);
        boolean flag2 = false;
        System.out.println(flag2);
        boolean flag3 = 5==9;
        System.out.println(flag3);
        boolean flag4 = 5<9;
        System.out.println(flag4);

    }
}

四、类型转换问题

public class textVar08 {
    public static void main(String[] args){
        //类型转换的两种形式:
        double d = 6;//int-->double  自动类型转换
        System.out.println(d);
        int i = (int)6.5;//double--->int  强制类型转换 (强转)
        System.out.println(i);

        //在同一个表达式中,有多个数据类型转换的时候,应该如何处理:
        /*
        double d2 = 12+1294L+8.5F+3.81+'a'+true;
        System.out.println(d2);
        多种数据类型参与运算的时候,整数类型,浮点类型,字符类型都可以参与运算,唯独布尔类型不可以参与运算。
         */
        double d2 = 12+1294L+8.5F+3.81+'a';
        System.out.println(d2);
        /*
        类型级别:(从高到低的)
        byte,short,char < int < long < float < double
       级别用来做什么?当一个表达式中有多种数据类型的时候,要找出当前表达式中级别最高的那个类型,然后其余的
       类型都转换为当前表达式中级别最高的类型进行计算。
       double d2 = 12+1294L+8.5F+3.81+'a';
                 =12.0+1294.0+8.5+3.81+97.0
         */
        int i2 = (int)(12+1294L+8.5F+3.81+'a');
        System.out.println(i2);
        /*
        在进行运算的时候:
        左=右  : 直接赋值
        左<右  : 强转
        左>右  : 直接自动转换
         */
        //以下情形属于特殊情况:
        byte b = 12;
        System.out.println(b);
        //对于byte,short,char类型来说,只要在他们的表述范围中,赋值的时候就不需要进行
        //强转了直接赋值即可。

    }
}

练习习题(final,字符常量,Scanner的使用):

import java.util.Scanner;//形象理解:在java.util下降Scanner拿来用
public class testVar09 {
    public static void main(String[] args){
        //现实功能:求圆的周长和面积
        //【1】提取变量:提取变量,就是为了一劳永逸,以后只要改变变量的值,下面只要用到这个变量的地方,取值也都发生变化了
        //【2】一个变量值被final修饰,这个变量就变成了一个常量,这个常量的值就不可变了
        //     这个常量就是我们所说的字符常量----》pi
        //     约定俗成的规定:字符常量的名字全部大写
        //【3】使用扫描器:Scanner的使用---》注意通过形象的理解去使用

        final double PI = 3.1415926;
        //拿来一个扫描器:
        Scanner sc = new Scanner(System.in);
        //给一个友好型的提示:
        System.out.println("请录入一个半径:");
        //让扫描器扫描键盘录入的int类型的数据:
        int r = sc.nextInt();

        //求周长:
        double c = 2*PI*r;
        System.out.println("周长为:"+c);

        //求面积:
        //pi = 9.29;报错,java: 无法为最终变量pi分配值
        double s = PI*r*r;
        System.out.println("面积为:"+s);
    }
}

练习:加深对Scanner的使用: 

代码:

import java.util.Scanner;
public class textVer10 {
     public static void main(String[] args){
         //键盘录入学生信息:年龄,身高,姓名,性别:
         //键盘输入年龄:(接收int类型数据)
         Scanner sc = new Scanner(System.in);
         System.out.print("请输入年龄:");
         int age = sc.nextInt();
         //键盘输入身高:(接收double类型数据)
         System.out.print("请输入身高:");
         double height = sc.nextDouble();
         //键盘输入姓名:(接收String类型数据---》字符串)
         System.out.print("请输入姓名:");
         String name = sc.next();
         //键盘输入性别:(接收char类型数据)
         System.out.print("请输入性别:");
         String sexStr = sc.next();
         char sex = sexStr.charAt(0);
         //上面两句可以合为一句表示:char sex - sc.next().charAt(0)
         System.out.print("该学生的信息为:姓名是"+name+",年级是:"+age+",身高为:"+height+",性别是:"+sex);

     }
}

 结果:

请输入年龄:18
请输入身高:183.5
请输入姓名:呼呼呼
请输入性别:男
该学生的信息为:姓名是呼呼呼,年级是:18,身高为:183.5,性别是:男