Java基础篇-数据类型

54 阅读5分钟

前言

Java语言是强类型语言,对于每一种数据都定义了明确的具体的数据类型,在内存中分配了不同大小的内存空间。本文将详细的介绍各类型。

Java的数据类型

Java的数据类型主要分为两部分:基本数据类型、引用类型。如下图:

mindmap
      Java数据类型
        基本数据类型
         数值型
          short
          int
          long
         浮点型
          float
         布尔型
          double
         字节型
          byte
          boolean
         字符型
          char
        主要引用类型
          类
          接口
          数组
          枚举
          注解
          
    

基本类型具体信息表:

类型类型名称关键字占用内存作为成员变量默认值包装器类型
整形字节型byte1字节0Byte
短整型short2字节0Short
整型int4字节0Integer
长整型long8字节0LLong
浮点型单精度浮点型float4字节0.0FFloat
双精度浮点型double8字节0.0DDouble
字符型字符型char2字节'\u0000'Character
布尔型布尔型boolean1字节falseBoolean

1、基本数据类型

byte类型

byte:8位整型,最大存储数据量是255,存储数据的范围是-128~127之间

看到这里,大家可能就疑惑了
1、为什么是8位整型?:

byte类型占用内存为1字节,1字节(byte)=8位(bit) , 一个字节等于二进制位的八位

2、为什么byte的范围是-128 ~ 127而不是-128 ~ 128呢?原因是对于二进制编码来讲,最高位位0,则表示正数;最高位为1,则表示负数。以8位的二进制位为例:

8位二进制最大正整数为:0111 1111       ——        127(十进制)

8位二进制最小负整数为:1000 0000      ——        -128(取反后加一)

short

short:16位整型,最大存储数据量是65535,存储数据的范围是-32768~32767之间。

int类型

int:32位整型,最大存储数据量是4294967295,存储数据的范围是-2^31~2^31-1之间。

long

long:64位整型,最大存储数据量是2^64-1,存储数据的范围是-2^32~2^32-1之间。

float类型

float:32位浮点型,存储数据的范围是3.4e-45~1.4e38,在进行数据存储时,必须在后面追加F或f。

double

double:64位浮点型,存储数据的范围是4.9e-324~1.8e308,在进行数据存储时,在后面追加D或d,也可不加。

char

char:16位字节型,用于Unicode码,进行赋值时需要使用''。且一次只能定义一个字符。

boolean

boolean:波尔型,波尔行最大的特点是他只有两个值:true、false。其中,true代表真,false代表假。

2、引用数据类型

引用数据类型:非常多,大致包括:类、 接口类型、 数组类型、 枚举类型、 注解类型、 字符串型。
简单来说,所有的非基本数据类型都是引用数据类型。

Class(类)

在Java语言中一切都是对象,那么是什么决定了某一类对象的外观与行为呢?换句话说,是什么确定了对象的类型?
于是java提供了关键字class,用于声明类

/**
* 定义一个人 的类
*/
public class Person {
        /**
        * 姓名
        */
	String name;
        /**
        * 年龄
        */
	int age;
	Person(String name, int age){
		this.name = name;
		this.age = age;
	};
	public static void main(String[] args) {
		Person p1 = new Person("小明",20);
		Person p2 = new Person("小红",19);
	}
  }

Array(数组)

数组 是一种容器,可以同时存放多个相同数据类型的数据
数组是一种引用类型,其长度在程序运行期间不可以改变
数组和其他容器之间的区别在三方面:效率、类型、保存基本类型的能力

例举几种数组定义方式

public static void main(String[] args) {  
  
    // 方式一: 定义一个长度为3的数组,并初始化  
    int[] array01 = {1,2,3};  
    // 方式二: 定义一个长度为0的空数组  
    int[] array02 = new int[]{};  
    // 方式三: 定义一个长度为1的数组  
    int[] array03 = new int[1];
    array03[0] = 10;
    
    System.out.println(array01.length);  
    System.out.println(array02.length);  
    System.out.println(array03.length);
}

interface(接口)

使用interface关键字来定义接口。编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。
一个接口表示: "所有实现了该特定接口的类看起来都像这样"

  • 接口与类的区别:
  • 接口不能用于实例化对象。
  • 接口没有构造方法。
  • 接口中所有的方法必须是抽象方法。
  • 接口不能包含成员变量,除了 static 和 final 变量。
  • 接口需要被类实现。当要实现一个接口时,在接口中被定义的的方法必须被定义为是public的
  • 接口支持多继承。
public interface AnimalService {  
  
/**  
* 吃
*/  
void eat();  
   
}

public class AnimalServiceImpl implements AnimalService {
    @Override  
    public void eat() {
        System.out.println("吃草");
    }

}

enum(枚举)

关键字enum可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规程序组件使用。
Java枚举类型本质上 是一种继承java.lang.Enum类

定义一个简单的枚举类:

public enum RequestStatusEnum {  
    SUCCESS("0", "success");  
  
    private final String code;  
    private final String message;  
  
    RequestStatusEnum(String code, String message) {  
        this.code = code;  
        this.message = message;  
    }  
  
    public String getCode() {  
        return this.code;  
    }  

    public String getMessage() {  
        return this.message;  
    }  
}

注解

注解类型也属于一种Java类型,它用“@interface”关键字来声明。与其他任何java接口一样,注解也将会编译成class文件。

定义一个简单的注解:

import java.lang.annotation.Documented;  
import java.lang.annotation.Retention;  
import java.lang.annotation.Target;  
  
import static java.lang.annotation.ElementType.METHOD;  
import static java.lang.annotation.ElementType.TYPE;  
import static java.lang.annotation.RetentionPolicy.RUNTIME;  
  
@Documented  
// 定义注解长哪个级别可用
@Retention(RUNTIME)  
// 定义注解用在什么地方
@Target({METHOD, TYPE})  
public @interface AspectPoint {

}