跳转至

java 数据类型

1. 标识符

1.1 作用

  常量、变量、方法、类和包等的名称

1.2 命名规则

   以下是硬性规定

  • 必须以字母、_下划线、美元符$开头。
  • 其它部分可以是字母、下划线“_”、美元符“$”和数字的任意组合
  • 大小写敏感,长度无限制。
  • 不可以是Java的关键字[保留字]。

注意

1. Java不采用通常语言使用的ASCII字符集 
2. Java采用unicode这样的标准的国际字符集。
因此,这里的字母的含义:英文、汉 字等等。
(不建议大家使用汉字来定义标识符!)

   常规建议

  • 驼峰标识
1. 类名,接口名称在命名的时候要首字母大写
2. 方法,变量命名的时候,首字母要小写
3. 多个单词拼接表示一个标识时候,每个单词都要大写
  • 见名知意
1. 千万别写拼音
2. 看到标识符,就知道意思

2. 关键字和字符集

  Java关键字是Java语言保留供内部使用的,如class用于定义类。 关键字也可以 称为保留字,它们的意思是一样的。

  • ASCII

英文字符集 1个字节

  • ISO8859-1

西欧字符集 1个字节

  • BIG5

台湾的大五码,表示繁体汉字 2个字节

  • GB2312

大陆使用最早、最广的简体中文字符集 2个字节

GBK

GB2312的扩展,可以表示繁体中文 2个字节

  • GB18030

最新GBK的扩展,可以表示汉字、维吾尔文、藏文等中华民族字符 2个字节

Unicode

国际通用字符集 2个字节 ISO8859-1 BIG5 GB2312 unicode utf-8,utf-16 GBK GB18030

3. 常量和变量

  • 常量: 在程序运行过程中,值不会发生改变的量叫做常量
  • 变量: 在程序运行过程中,值会发生改变的量叫做变量

要点

  • Java是一种强类型语言,每个变量都必须声明其类型。
  • Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
  • 变量在使用前必须对其声明, 只有在变量声明以后,才能为其分配相应长度的存储单元,声
type varName [=value] [{,varName[=value]}] 

注意事项

1. 每个变量都有类型,类型可以是基本类型,也可以是引用类型。 
2. 变量名必须是合法的标识符。

例子

变量: 变量名称,变量类型,作用域
1. 先声明后赋值
int a;声明
a = 10;赋值

2. 声明+赋值
int a = 20;

3. 注意:
1. 在类内,方法外定义的变量叫成员变量,会存在默认值
2. 在方法内,定义的变量必须要进行初始化,不会存在默认值

final 常量

使用final关键字修饰的变量称之为常量或者叫最终常量,表示不可以修改
1. 使用final修饰的变量,只能被初始化一次,变成了常量。 
2. final常量是有名称的

public class Constants { 
    public static void main(String[] args) 
        { 
            final double PI = 3.14; 
            // PI = 3.15; //error 
            double r = 4; 
            double area = PI * r * r; 
            double circle = 2 * PI * r; 
            System.out.println("area = " + area); 
            System.out.println("circle = " + circle); 
        } 
}

4. 基本数据类型

  java是一种强类型的语言,

  • 强类型表示,变量在定义的时候,必须显示的声明类型是什么, 如java,c++
  • 弱类型表示,变量会割接值自己去推断,不需要指定类型是什么,如 js,python,scala

常量是有数据类型的,变量都必须声明其数据类型。

  java的基础数据类型一共4类8种

4.1 整数类型

类型 占用存储空间 表示范围
byte 1个字节 -128 ~127
short 2个字节 -215 ~ 215-1
int(integer) 4个字节 -231 ~ 231-1
long 8个字节 -263 ~ 263-1

整型常量

  • 十进制整数,如:99, -500, 0
  • 八进制整数,要求以 0 开头,如:015
  • 十六进制数,要求 0x 或 0X 开头,如:0x15
  • 整型常量默认为int型,声明long型常量可以后加‘ l ’或‘ L ‘(建议使用大写, 小写容易误认为数字1),如:
long a = 55555555; //不出错,在Int表示的范围内(21亿内)。 
long b = 55555555555;//不加l出错,已经超过int表示的范围

整数类型

整数类型: byte short int long [不同类型表示不同的长度]
    byte : 使用一个字节存储,因此范围是  2^7 ~ 2^7 -1   [-128 ~ 127]
   short : 使用两个字节存储,因此范围是  2^15 ~ 2^15 -1 [-32768 ~ 32767]
    int  : 使用四个字节存储,因此范围是  2^31 ~ 2^31 -1 [正负21亿]
    long : 使用八个字节存储,因此范围是  2^63 ~ 2^63 -1
       1.在使用整型的时候,默认都是int类型,
       2.如果需要使用long类型的话,必须要在数字后面添加L,
         建议使用大写,小写容易和数字1混淆。

4.2 浮点类型

类型 占用存储空间 表示范围
float 4字节 -3.403E38 ~ 3.403E38
double 8字节 -1.798E308 ~ 1.798E308

浮点类型常量

  • 十进制数形式,例如:
3.14 314.0 0.314 
  • 科学记数法形式,如
314e2 314E2 314E-2 
double f = 314e2; //314*10^2-->31400.0 
double f2 = 314e-2; //314*10^(-2)-->3.14 
  • 浮点型变量

浮点

浮点类型: float double 小数类型:1. 小数点 2.科学计数法
    float:  单精度,精度可以精确到小数点后7位
    double: 双精度,精度是float的双倍
       1.默认浮点类型低double类型,
       2.使用float的时候,数字后面要添加f|F
       3.浮点类型并不能表示一个精确的值,会损失一定的精度

1. float类型:单精度类型,尾数可以精确到7位有效数字,在很多情况下,
 float类型的精度很难满足需求。 

2. double类型:双精度类型 精度是float类型的两倍,
 绝大部分应用程序都采用double类型。 
注意
1. 浮点常量默认为double。要变为float,需在后面增加F/f. 如: 3.14F 
2. 浮点数存在舍入误差,很多数字不能精确表示。如果需要进行不产生舍入误差的精确数字计算,
需要使用BigDecimal类。

4.3 字符类型

转义符 含义 Unicode值
\b 退格[backspace] \u0008
\n 换行 \u000a
\r 换行 \u000d
\t 制表符 \u0009
\" 双引号 \u0022
\' 单引号 \u0027
\\ 反斜杠 \u005c
字符类型: char
    占用2个字节,使用时候使用''表示

字符数据类型

1. 单引号用来表示字符常量。例如‘A’是一个字符,它与“A”是不同的, 
   “A”表示含有一个字符的字符串。 

2. char 类型用来表示在Unicode编码表中的字符。 

3. Unicode编码被设计用来处理各种语言的所有文字,它占2个字节, 
  可允许有65536个字符;ASCII码占1个字节,可允许有128个字符 (最高位是0),
  是Unicode编码表中前128个字符。 

4. Java 语言中还允许使用转义字符 ‘\’ 
  来将其后的字符转变为其它的 含义,char c2 = '\n'; //代表换行符 

5. char类型在内存中存储的是该字符的Unicode编码值,
  所以char类 型可以当做int类型来处理

4.4 布尔类型

布尔类型: boolean
    只有true和false,在存储的时候占1位

布尔类型

1. boolean类型有两个值,true和false 

2. boolean 类型用来判断逻辑条件,一般用于程序流程控制 

3. 实践:
   1. 请不要这样写:if ( is == true && done == false ) 只有新手才那么写。 
    对于任何程序员 if ( whether && !done ) 都不难理解吧。
    所以去掉所有的 ==fasle 和 ==true 
  • 引用数据类型

类,接口,数组