Java基本数据类型

前言

当掌握一种或者多种计算机编程语言,甚至外语之后,学习新事物的自信,也随之建成。

不同的计算机编程语言,都可以帮助程序员实现功能,英语和汉语都可以帮助人类表达思想。

不要纠结在自然语言或者计算机编程语言,它们本身的不同,要聚焦在我想要实现什么功能? 想要表达什么思想?

一、变量存在的意义

1.变量是什么?

有了域名之后我们就无需反复在浏览器中输入IP地址,有了变量之后,方便我们编程时轻松调用需要的数据。

变量是给编程过程中使用到的数据标记1个别称,变量一般是动态变化的数据,也可以是静态不变的。

2.声明变量

Java是强类型的编程语言,我们要想给数据声明变量,就必须声明数据的类型。

数据类型 变量名 =值;

二、Java的基本数据类型

计算机只认识0和1;

程序员通过编程语言的语法,告知计算机我输入的数据是什么类型?

编程语言会根据不同类型选择不同的存储机制,把数据存储到内存中;

当调用这些数据时,编程语言进行内存寻址,把数据从内存中加载出来;

那为什么在python中不需要变量名和变量类型声明?

python是解释型语言,python的变量不需要声明,但是需要初始化,python解释器会为每个出现的对象分配内存,哪怕他们的值完全相等(注意是相等不是相同),其中变量其实通过一个标记调用内存中的值,而变量名就是这个标记的名称,python可以通过直接赋值初始化让一个变量拥有内存和值(电脑可以直接理解)。
对比于编译型语言Java,解释器语言Python的优势在于,解释器帮你做了很多事;

比如说动态分配内存在Python中可以直接给a赋值成整形,浮点型,字符型等等。

Java有以下几种数据类型;

1.整数型

整数类型可以帮助我们在计算机中执行数学运算。

在Java中可以使用byte、int、short、long表示不同大小范围的整数。

byte:      占8位,  1个字节,可表示   -128~127之间的整数。

short:     占16位,2个字节,可表示   -32768~32767之间的整数。

int:         占32位,4个字节,可表示   -21亿~21亿之间的整数。

long        占64位,8个字节,可表示  -9,223,372,036,854,775,808(-2^63)之间的整数

package var;

import sun.security.acl.WorldGroupImpl;

public class Var4 {
    public static void main(String[] args) {
        byte English_score = 100;             //byte
        short total_score = 660;              //short
        int Chinese_population = 130000000;   //int
        long world_population = 6400000000L;  //long
        System.out.printf("英语分数: %d 高考分数:%d 中国人口:%d 世界人口:%d
", English_score, total_score, Chinese_population, world_population);
    }
}

 整型的运算操作

package var;

public class Var1 {
    public static void main(String[] args) {
        // 先声明1个变量
        int a1 = 10;
        System.out.println(a1);
        a1 = 20;
        System.out.println(a1);
        int a = 10;
        int b = 20;
        System.out.println(a + b);
        System.out.println(a - b);
        System.out.println(a * b);
        System.out.println(a / b);//如果运算两端都是int,结果还是int类型
        System.out.println(a % b); //取余
        System.out.println(10 % 3);

    }

}

2.浮点型

double类型操作和整数基本一样,2个double类型计算得出的结果都是double类型。

在Java中可以使用float和double这2种数据类型表示浮点数;

float类型的浮点数        占32位, 最多可保留小数点后面的8位;

double类型的浮点数    占64位,最多保留小数点后面的17位;

package var;

import sun.security.acl.WorldGroupImpl;

public class Var4 {
    public static void main(String[] args) {
        //float类型的浮点数占32位,最多可保留小数点后8位
        float a=0.123456789123456789f;
        System.out.println(a);
        //double类型的浮点数占64位,最多保留小数点后面的17位;
        double b=0.123456789123456789;
        System.out.println(b);
    }
}

 浮点型的运算操作

package var;

public class Var2 {
    public static void main(String[] args) {
        //声明double类型的变量:=表示赋值
        double price = 1.25;
        price += 0.15;
        System.out.println(price);
        price -= 0.01;
        System.out.println(price);
        //double类型计算得到的都是double类型
        double total = price * 3;
        System.out.println(total); //4.17
        System.out.println(price / 100);//0.0139
        System.out.println(price % 2);

    }
}

3.boolean 布尔值

我们使用boolean类型保存1种状态,这1种状态要么是 true 要么是false。

布尔类型主要用做条件判断,进而对流程控制。

package var;

public class Var3 {
    public static void main(String[] args) {
        double incomes = 1000;
        double costs = 20000;
        System.out.println(incomes > costs);   //false:收入大于花销?
        System.out.println(incomes < costs);   //true 收入小于花销?
        System.out.println(incomes == costs);  //false收入等于花销吗?
        System.out.println(incomes != costs);  //true收入不等于花销吗?
    }
}

4.char 字符

单一的文字符号就是字符,每个字符在内存中占16位;

package var;

import sun.security.acl.WorldGroupImpl;

public class Var4 {
    public static void main(String[] args) {
        char a = '中';
        char b = 'a';
        System.out.println(a);
        System.out.println(b);
    }
}

5.String 字符串

把多个字符串起来=字符串

package var;

public class Var4 {
    public static void main(String[] args) {
        String name1 = "Martin";
        String name2 = "Morgen";
        System.out.println(1 + name1 + name2);
        int a = 1, b = 2;
        System.out.println("a + b = " + a + b);         //a + b = 12
        System.out.println("a + b = " + (a + b));       //a + b = 3
    }
}

6.基本数据类型之间的转换

 根据Java基本数据类型占用内存大小排序,可以把基本类型排序为以下顺序;

byte-->short,char-->int--->long--->float--->double

小数据类型转换成大数据类型,这个过程是安全的;

大数据类型转换成小数据类型,这个过程可能会出现问题,必须要强制转换;

基本数据类型强制转换的语法如下:

(转换后的数据类型)变量

package var;

import sun.security.acl.WorldGroupImpl;

public class Var4 {
    public static void main(String[] args) {
        int a = 10;
        long b = a;
        System.out.println(b);  //小数据转大数据是安全的
        long c = 10;
//        int d =c;        //大数据转小数据是不安全有风险的,必须强制转换
        int d = (int) c;
        System.out.println(d);
        long c1 = 1000000000000L;
        int d1 = (int) c1;   //大数据转小数据出现内存溢出,程序不可控了
        System.out.println(d1);  //-727379968
    }
}

7.基本数据类型之间的运算

Java基本数据类型进行运算时会遵循一下规则;

A.相同数据类型之间

相同数据类型之间运算,得到的结果一定还是这个数据类型;

int + int =int;

B.不同数据类型之间

首先,把小的数据类型自动转换成大的数据类型,再进行运算,得出的结果一定是大的数据类型;

int + int =long;

C.特殊的byte、short、char

由于byte、short、char占用的位数少,可表示的数字范围有限,

所以当它们进行运算之后的结果可能会需要更大的内存去存储;

为了避免运算造成内存溢出,我们就需要使用比byte、short、char更大的数据类型来存储运算后的结果;

byte + byte = int; 结果至少是int;

package var;

import sun.security.acl.WorldGroupImpl;

public class Var4 {
    public static void main(String[] args) {
        byte a = 100;
        byte b = 120;
//    byte c =a+b;   //byte无法表示a+b的和
        int c = a + b;
        System.out.println(c);
    }
}

三、使用Java基本数据类型

程序=数据结构+算法,所以任何语言都要支持我们输入各种类型的信息数据。

import java.util.Scanner;

public class Student{
    public static void main(String[] args){
        //键盘录入学生信息:姓名、年龄、身高、和性别
        String greeting="
------欢迎来到清花大学------
";
        System.out.println(greeting);
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入姓名: ");
        String name= sc.next();
        System.out.print("请输入性别: ");
        char charGender=sc.next().charAt(0);
        System.out.print("请输入年龄: ");
        int age=sc.nextInt();
        System.out.print("请输入身高: ");
        double heigh=sc.nextDouble();
        System.out.printf("该学生的姓名为:%s,性别:%c,年龄:%d,身高:%f
",name,charGender,age,heigh);
        
    }
    
}

 

参考

原文地址:https://www.cnblogs.com/sss4/p/15410973.html