Java语言——数据类型

Ⅰ、数据类型基础

一. 注释

方便程序的阅读, Java语言中可写一些说明性的文字,来提高程序的可读性
注释不会出现在字节码文件中


注释种类:

  • 单行注释: 使用"//” 开头,"//” 后面的单行内容均为注释。
  • 多行注释:以"/*” 开头以"*/" 结尾,在"/”和“/”之间的内容为注释,我们也可以使用
    多行注释作为行内注释。但是在使用时要注意,多行注释不能嵌套使用。
  • 文档注释:以"/*” 开头以"*/”结尾,注释中包含一些说明性的文字及一些JavaDoc标签(后期写项目时,可以生成项目的API)

二. 标识符

标识符是用来给变量、类、方法以及包进行命名的,如Welcome、main、System、age、name、gender等。标识符需要遵守一定的规则:

  1. 标识符必须以字母、下划线_、美元符号$开头。
  2. 标识符其它部分可以是字母、下划线“_”、美元符“$”和数字的任意组合。
  3. Java 标识符大小写敏感,且长度无限制。
  4. 关键字不能用作标识符。
    • 合法标识符举例:age、$salary、_value、__1_value
    • 非法标识符举例:123abc、-salary

使用规范
在这里插入图片描述

三. 关键字

在这里插入图片描述

四. 命名规范

  1. 所有变量、方法、类名:见名知意
  2. 类成员变量:首字母小写和驼峰原则: monthSalary
  3. 局部变量:首字母小写和驼峰原则
  4. 常量:大写字母和下划线:MAX_VALUE
  5. 类名:首字母大写和驼峰原则: Man, GoodMan
  6. 方法名:首字母小写和驼峰原则: run(), runRun()

Ⅱ、Java变量

声明,初始化形式与C语言相同


一、变量解释

  1. 本质
    变量本质上就是代表一个”可操作的存储空间”,空间位置是确定的,但是里面放置什么值不确定。我们可通过变量名来访问“对应的存储空间”,从而操纵这个“存储空间”存储的值。

    Java是一种强类型语言,每个变量都必须声明其数据类型。变量的数据类型决定了变量占据存储空间的大小。 比如,int a=3; 表示a变量的空间大小为4个字节。
    变量作为程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。变量在使用前必须对其声明, 只有在变量声明以后,才能为其分配相应长度的存储空间。

  2. 声明

    type  varName [=value][,varName[=value]...];
    
    //[]中的内容可有可无
    

    数据类型 变量名 [=初始值] [,变量名 [=初始值]…];

    double  salary;
    
    long  earthPopulation = 100000;
    
    int  age, year;
    
  3. 注意事项

    • 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
    • 变量名必须是合法的标识符
    • 变量声明是一条完整的语句,因此每一个声明都必须以分号结束

二、变量类型

  • 3种变量类型
    • 类变量(静态变量):独立于方法之外的变量,用 static 修饰。
    • 实例变量:独立于方法之外的变量,不过没有 static 修饰。
    • 局部变量:类的方法中的变量。
      在这里插入图片描述

局部变量从属于方法,成员变量从属于对象,静态变量从属于类


  1. 局部变量
    特点

    • 局部变量声明在方法、构造方法或者语句块中;
    • 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁;
    • 访问修饰符不能用于局部变量;
    • 局部变量只在声明它的方法、构造方法或者语句块中可见;
    • 局部变量是在栈上分配的。
    • 局部变量没有默认值,所以局部变量被声明后,必须初始化,才可以使用。

    package com.wsy.test;
    
    public class Test{
          public void pupAge(){
              int age = 0;       //局部变量必须初始化
              age = age + 7;
              System.out.println("小狗的年龄是: " + age);
          }
    
              public static void main(String[] args){
             Test test = new Test();
              test.pupAge();
           }
    }
    

    age是一个局部变量。定义在pupAge()方法中,它的作用域就限制在这个方法中。

  2. 实例变量(成员变量)

    特点

    • 实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。
      在这里插入图片描述

    • 实例变量声明在一个类中,但在方法、构造方法和语句块之外;

    • 当一个对象被实例化之后,每个实例变量的值就跟着确定;

    • 实例变量在对象创建的时候创建,在对象被销毁的时候销毁;

    • 实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息;

    • 实例变量可以声明在使用前或者使用后;

    • 访问修饰符可以修饰实例变量;

    • 实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见;

    • 实例变量具有默认值。数值型变量的默认值是0/0.0,布尔型变量的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,也可以在构造方法中指定;
      在这里插入图片描述

    • 实例变量可以直接通过变量名访问。但在静态方法以及其他类中,就应该使用完全限定名:ObejectReference.VariableName。

    import java.io;
    public class Employee{
         public String name;        // 这个实例变量对子类可见
         private double salary;        // 私有变量,仅在该类可见
         public Employee (String empName){          //在构造器中对name赋值
                    name = empName;
         }
             
    	public void setSalary(double empSal){           //设定salary的值
              salary = empSal;
    	}
    
    	// 打印信息
    	public void printEmp(){
    	          System.out.println("名字 : " + name );
    	          System.out.println("薪水 : " + salary);
    	}
    
    	public static void main(String[] args){
    	         Employee empOne = new Employee("RUNOOB");
    	         empOne.setSalary(1000.0);
    	         empOne.printEmp();
    	       }
    }
    

    在这里插入图片描述

  3. 类变量(静态变量)
    特点

    • 类变量也称为静态变量,在类中以 static 关键字声明,但必须在方法之外。
    • 无论一个类创建了多少个对象,类只拥有类变量的一份拷贝。
    • 静态变量除了被声明为常量外很少使用,静态变量是指声明为 public/private,final 和 static 类型的变量。静态变量初始化后不可改变。
    • 静态变量储存在静态存储区。经常被声明为常量,很少单独使用 static 声明变量。
    • 静态变量在第一次被访问时创建,在程序结束时销毁。
    • 与实例变量具有相似的可见性。但为了对类的使用者可见,大多数静态变量声明为 public 类型。
    • 默认值和实例变量相似。数值型变量默认值是 0,布尔型默认值是 false,引用类型默认值是 null。变量的值可以在声明的时候指定,也可以在构造方法中指定。此外,静态变量还可以在静态语句块中初始化。
    • 静态变量可以通过:ClassName.VariableName的方式访问。
    • 类变量被声明为 public static final 类型时,类变量名称一般建议使用大写字母。如果静态变量不是 public 和 final 类型,其命名方式与实例变量以及局部变量的命名方式一致。

Ⅲ、Java 常量

常量通常指的是一个固定的值,例如:1、2、3、’a’、’b’、true、false、”helloWorld”等。
在Java语言中,主要是利用关键字 final 来定义一个常量。 常量一旦被初始化后不能再更改其值。


  1. 声明

    final type varName = value;

  2. 注意事项
    为了更好的区分和表述,一般将1、2、3、’a’、’b’、true、false、”helloWorld”等称为字面常量,而使用final修饰的PI等称为符号常量。

Ⅳ、基本数据类型

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

  • 数值型- byte、 short、int、 long、float、 double
  • 字符型- char
  • 布尔型-boolean
    在这里插入图片描述

一、整型

  1. 变量
    在这里插入图片描述
    长整型声明

    声明long型常量可以后加‘ l ’或‘ L ’
    long b = 55555555555; //不加L编译错误,已经超过int表示的范围。
    long b = 55555555555L; //编译成功

  2. 常量
    表现形式
    在这里插入图片描述

二、浮点型

  1. 变量
    在这里插入图片描述
    float类型又被称作单精度类型,尾数可以精确到7位有效数字。

    double表示这种类型的数值精度约是float类型的两倍,又被称作双精度类型。

    浮点型常量默认类型也是double。

    • float型声明

      float类型的数值有一个后缀F或者f ,没有后缀F/f的浮点数值默认为double类型。也可以在浮点数值后添加后缀D或者d, 以明确其为double类型。

    • 注意

      不要使用浮点数进行比较!

      浮点数一般都存在舍入误差,很多数字无法精确表示,其结果只能是接近, 但不等于。
      在这里插入图片描述
      数的比较
      java.math包下面的两个有用的类:BigInteger和BigDecimal,这两个类可以处理任意长度的数值。BigInteger实现了任意精度的整数运算。BigDecimal实现了任意精度的浮点运算。
      在这里插入图片描述

  2. 常量
    表现形式
    在这里插入图片描述

    double f = 314e2;  //314*10^2-->31400.0
    
    double f2 = 314e-2; //314*10^(-2)-->3.14
    

三、字符型

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

  • char chinaChar ='中';
    
    char englishChar = 'a';
    
  • 字符型的十六进制值表示方法

    char c = '\u0061';
    
    //System.out.prinyln(c);  结果为a;
    
  1. 转义字符
    在这里插入图片描述

  2. 字符串(不是基本数据类型,是对象)

    使用双引号来表示字符串常量

    String类,字符序列(char sequence)。

    String d = “abc”;

四、boolean类型

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



  • 在这里插入图片描述

  • 注意

    不要写:if ( flag == true )

    好的写法:if ( flag ) 或 if ( !flag )

Ⅴ、类型转换

  1. 自动类型转换
    自动类型转换指的是容量小的数据类型可以自动转换为容量大的数据类型


    容量:表示的取值范围

    long的取值范围远远小于float。
    在这里插入图片描述

    自动转换表
    在这里插入图片描述
    红色的实线表示无数据丢失的自动类型转换,而虚线表示在转换时可能会有精度的损失。

    注意
    可以将整型常量直接赋值给byte、 short、 char等类型变量,而不需要进行强制类型转换,只要不超出其表数范围即可。

  2. 强制类型转换
    又称为造型,用于显式的转换一个数值的类型。在有可能丢失信息的情况下进行的转换是通过造型来完成的,但可能造成精度降低或溢出。


    语法格式:( type ) var

    在这里插入图片描述
    注意

    1. 当将一种类型强制转换成另一种类型,而又超出了目标类型的表数范围,就会被截断成为一个完全不同的值。

    2. 不能在布尔类型和任何数值类型之间做强制类型转换

    3. 操作比较大的数时,要留意是否溢出,尤其是整数操作时

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EviJCfq8-1644844561651)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c86f5bfc-833b-4c00-92ab-aa3e6fe5a3d9/Untitled.png)]

      在计算时已经发生溢出,是将溢出的值赋给变量,改变变量的类型无用,要改变计算的因子类型。

    4. 不要命名名字为l的变量,l容易和1混淆。long类型使用大写L不要用小写。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值