Java初学者的精神食粮——语言基础之标识符、数据类型、变量和常量

一、Java标识符

1、标识符(identifier)

java编程中标识符是赋予变量、对象、类和方法的名称

  1. 标识符可以由字母,数字,下划线_,和"$"组成
  2. 标识符必须以字母、下划线_或$开头,之后可以跟其他字符
  3. 标识符严格区分大小写,无长度限制
  4. 在自定义标识符的时候,应该使其能够反映表示的变量、对象或类的意义
    例如: 2mail (不能以数字开头)
    room# 为非法标标识符

2、关键字(keyword)

关键字是一种特定专用的标识符,不允许重新定义其含义。

关键字都用小写字母表示

常用的关键字有:
在这里插入图片描述

Java中没有goto和const

二、数据类型

数据类型
基本类型
引用类型
数值类型
字符类型
布尔型Boolean
类/接口/数组
String
枚举
整数型
浮点型
char
byte/short/int/long
float/double

1.基本数据类型

基本数据类型的变量在堆栈中直接包含其数据,每个变量都有自己的数据副本。

①取值范围

数据类型字节取值范围默认值
byte1-27~(27-1)0
char2\u000~\ufff\u0000
short2-215~(215-1)0
int4-231~(231-1)0
long8-263~(263-1)0
float43.4E-38~3.4E380.0F
double81.7E-308~1.7E3080.0D
boolean1true/falsefalse

1Byte(字节)=8bit(位)

1286432168421
2726252423222120

②类型转换(可能会导致数据的溢出或者精度的下降)

  • 自动类型转换(隐式转换):小范围类型到大范围类型
 byte b = 20;
 int a = b; //大类型可以容纳小类型
  • 强制类型转换(显示转换):大范围类型到小范围类型
int a;
byte b = (byte)a;  //强制让小类型容纳大类型
  • 运算过程中转换:
short sh1=(short)(sh+3)  

图中的虚线表示可能会降低精度
图中的虚线表示可能会降低精度

2.引用数据类型

引用数据类型的变量在堆栈中存储对数据的引用地址,数据存储在堆中。

三、变量与常量

1.变量

变量是程序中的基本存储单元,在程序运行的时候得到其数据,可以修改。

①变量的作用域(变量的可被访问范围)

  • 成员变量 (在类内部声明的变量)即类的字段
  • 方法体局部变量(花括号之内声明的变量)必须初始化才可以使用
  • 语句块局部变量(在控制结构块中声明的变量,例如for、if语句中声明的变量)

切记:java中没有全局变量!

2.常量

常量是指在程序执行过程中值不变的量

  • 整型常量
    整型常量在机器中占32位。
    ①十进制整数 (以10为基数): 123,-345,0
    ②八进制整数 (以8为基数):以0开头,如0123表示十进制数83,-011表示十进制数-9
    ③十六进制整数(以16为基数):0x或0X开头,0x123表示十进制数291,-0x12表示十进制数-18
  • 浮点数类型常量
    ①十进制数形式,由数字和小数点组成:0.23 .23 23. 23.0
    ②科学计数法形式: 123e3或123E3
  • 布尔型常量
    ①true
    ②false
  • 字符类型常量
    在单引号‘’之内的字符,常用有很多转义字符
    在这里插入图片描述
  • 字符串类型常量
    在双引号“”之内的一串字符,在java中字符串常量作为String类的一个对象来处理。
  • null型常量(空引用)
    引用类型的唯一文本常量,可以为任何引用类型,赋值给任何引用类型的变量。
  • 用户声明常量
 final int  A = 1;

四、必懂拓展

1.装箱(包)和拆箱(包)

装箱和拆箱可以实现简单类型和引用类型之间的转换

8种简单类型对应的包装类
byteByte
shortShort
intInteger
longLong
charCharacter
floatFloat
doubleDouble

①装箱:(自动装包)将简单类型包装成对应的包装类(调用valueOf方法

代码:Integer a = 100;    //  Integer.valueOf
反编译

在这里插入图片描述

查看源码

由反编译得出的结果看到调用了Integer.valueOf方法
在这里插入图片描述

例:
public class Test {
    public static void main(String[] args) {
        int a = 10;
        int b = 10;
        Integer a1 = 200;
        Integer a2 = 200;
        Integer b1 = 100;
        Integer b2 = 100;

        System.out.println( a == b);
        System.out.println( a1 == a2);
        System.out.println( b1 == b2);
    }
}

运行结果:
在这里插入图片描述

如果是简单类型,比较的是数值是否相等 (a == b)
如果是引用类型:比较地址

如果在范围[-127 ~ 128]之内则放进缓存,不在int范围[-127~128]以内要创建一个新的对象

integer a1=new integer(200)
integer a2=new integer(200) 
system.out.printLn(a1  == a2)    //打印出true

②拆箱:(自动拆包)将包装类转化为基本类型(调用intvalue方法

代码:
Integer a=10;
int a1=a;
double d=a.doubleValue;  //将a强转为double型赋给double
反编译

在这里插入图片描述

查看源码

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值