[Java 基础] 第二课:数据类型

    技术2022-07-10  131

    一:基本概念

    1、标识符:标识符可以简单的理解为一个名字,我们需要表示程序代码的很多元素,例如 包、类、方法、代码段、变量等。我们选择的名字就成为标识符。标识符有下面这四个原则:

    标识符是由字母、数字、下划线、$符组成。但不能包含@、%、空格等。标识符可以由数字组成,但是数字不能作为开头。Java的标识符是严格区分大小写的。再选择标识符时,要具有意义。

    面试题可能包含。

    2、关键字:在java语言中已经被赋予特定意义的一些单词。一共有53个关键字。其中有两个保留字:const和goto。注意关键字不能被用作标识符!!

    注意:const 和goto可能会当做面试题。

    3、注释:Java代码的解释说明。不影响程序的运行,用于辅助读程。Java的注释分为下面三种类型。

    单行注释       //  注释内容多行注释          /*  注释内容  */文档注释        /**  注释内容   */

    这里的文档注释可以用作对代码段进行注释,一般解释方法的用法、功能等。在Eclipse里只要将鼠标光标放在方法、关键字等上,就可以查看它的文档注释,第一行是存放的地址,后面是相应的解释。

    了解就行

    4、变量:在Java中,有些数据值是不固定的,我们还要记录这些值,我们可以把这些值理解成变量。通过三个元素描述变量,变量类型、变量名、变量值。

    例:int age=18;

           int  age;           //有时我们不能确定变量的值,可以先不定义。

    5、常量:在Java运行过程中一直不会变的量。

    二:数据类型

    Java中数据类型分为量大类:一类是基本类型,另一种是引用类型。 

    1、基本类型

    练习1:输出最大最小值

    package cn.tedu.basic; //测试基本类型的取值范围 public class Test1_Scope { public static void main(String[] args) { //测试整数类型byte、short、int、long //定义变量来记录最大最小值 byte max=Byte.MAX_VALUE; byte min=Byte.MIN_VALUE; System.out.println("关于byte: 最大值:"+max+" 最小值:"+min); //定义变量来记录最大最小值 short maxSho=Short.MAX_VALUE; short minSho=Short.MIN_VALUE; System.out.println("关于short: 最大值:"+maxSho+" 最小值:"+minSho); //定义变量来记录最大最小值 int maxIn=Integer.MAX_VALUE; int minIn=Integer.MIN_VALUE; System.out.println("关于int: 最大值:"+maxIn+" 最小值:"+minIn); //定义变量来记录最大最小值 long maxLon=Long.MAX_VALUE; long minLon=Long.MIN_VALUE; System.out.println("关于long: 最大值:"+maxLon+" 最小值:"+minLon); //定义变量来记录最大最小值 float minFlo=Float.MIN_VALUE; float maxFlo=Float.MAX_VALUE; System.out.println("关于float: 最大值:"+maxFlo+" 最小值:"+minFlo); //定义变量来记录最大最小值 double minDou=Double.MIN_VALUE; double maxDou=Double.MAX_VALUE; System.out.println("关于double: 最大值:"+maxDou+" 最小值:"+minDou); } }

    练习2:字符串拼接,输出姓名

    package cn.tedu.basic; import java.util.Scanner; //通过+完成字符串的拼接 public class Test2_Inof { public static void main(String[] args) { // TODO Auto-generated method stub //输出:大家好,我叫XXX System.out.println("请输入您的姓名:"); //创建Scanner对象 Scanner scanner=new Scanner(System.in); if(scanner.hasNext()) { String name=scanner.next(); System.out.println("大家好,我叫"+name+",很高兴见到大家!"); } scanner.close(); } }

    练习3:计算圆形面积

    package cn.tedu.basic; import java.util.Scanner; public class Test3_Round { public static void main(String[] args) { //计算圆形的面积 System.out.println("请输入圆形半径:"); Double area=new Scanner(System.in).nextDouble(); System.out.println("圆形的面积为:"+3.14*area*area); } }

    练习4:变量值交换

    package cn.tedu.basic; import java.util.Scanner; public class Test4_Exchange { public static void main(String[] args) { // TODO Auto-generated method stub //用户输入a和b的值,将a和b的值进行交换 System.out.println("请输入a的值:"); int a=new Scanner(System.in).nextInt(); System.out.println("请输入b的值:"); int b=new Scanner(System.in).nextInt(); int c=a; a=b; b=c; System.out.println("交换后a="+a+",b="+b); } }

    这里由于double是非精准的,是由于在内存存储的方式造成的,所以会造成结果不准确。

    2、引用类型

    引用类型是一个对象类型,值是什么呢?它的值是指向内存空间的引用,就是地址,所指向的内存中保存着变量所表示的一个值或一组值。如:类,接口,数组等。

    三:基本类型的字面值

    整数的字面值是int

    int a = 999999999;//错,右侧是int类型,但是超出范围

    byte,short,char三种在范围内值可以直接赋值

    byte b=127;//对

    byte b=128;//错,右面已经超过byte范围是int类型的数据

    浮点数的字面值是double

    double  a=3.14;//对

    float a=3.14;//错,右面是double,float是四字节double是八字节存不下

    通过加后缀的方式

    L –long   如:long a = 99999999999;//错,超出范围,解决方案加L 例:long g=10000000000L;

    F –float   如:float a = 3.14;//错,右面是double类型,解决方案加F  例:float s=5.5f;

    D –double  如:double a=3;//错,右面是int,解决方案加D或者改成3.0(不加也没影响)   

    进制前缀

    0b  - 2进制

    0x   - 16进制

    0    - 8进制

    \u   - char类型,16进制  \u0000char类型的默认值

    四:基本类型的类型转换

    大到小(隐式转换)

    小到大(显示转换)

    需要进行强制类型转换。

    例如:int i=365;                   byte b=(byte) i;  //如果不转换就会报错

    五:运算规则

    计算结果的数据类型会和式子中的最大数据类型保持一致。

    3/2   得1 ,而不是1.5,结果是int类型

    3d/2  得1.5,相当于double/int,结果是double类型

    byte,short,char三种比int小的整数,运算时会先自动转换成int

    byte a=3;

    byte b=4;

    byte c=a+b;//错,运行时,byte会先自动转成int再运算,int+int还是int

    整数运算溢出

    整数运算,类似于一个中标,转到最大时,再转会回到最小。

    计算:光速运行一年的长度是多少米

    System.out.println(300000000*60*60*24*365);

    System.out.println(300000000l*60*60*24*365);

    浮点数运算不精确

    System.out.println(1-0.8);

    System.out.println(4.35*100);

    浮点数的特殊值

    Infinity 无穷大  3.14/0 

    Nan  not a number  0/0.0

    Processed: 0.009, SQL: 9