标识符与关键字

  • 标识符是用户编程时使用的名字,用于给变量、常量、函数、语句块等命名,以建立起名称与使用之间的关系。如:类名 HelloWorld
  • 标识符可以由字母、数字、下划线(_)和美元符($)组成,不能以数字开头
  • 标识符严格区分大小写
  • 标识符不能是Java关键字和保留字(public static void class…)
  • 标识符的命名最好能反映出其作用

Java关键字是电脑语言里事先定义的,有特别意义的标识符,有时又叫保留字,还有特别意义的变量。Java的关键字对Java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名和参数。

变量与数据类型

  • 变量的三个元素:变量类型、变量名和变量值。
  • 满足标识符命名规则
  • 符合驼峰法命名规范(一个单词所有字母都小写;多个单词则从第二个单词开始首字母大写)
  • 尽量简单,做到见名知意
  • 变量名的长度没有限制

  • 类的命名规则满足Pascal命名法规范

    • 类名由一个单词组成,则首字母大写;由多个单词组成,则每个单词的首字母大写

基本数据类型

数据类型 说 明 字 节
byte 字节型 1
short 短整型 2
int 整型 4
long 长整型 8
float 单精度浮点型 4
double 双精度浮点型 8
char 字符型 2
boolean 布尔型 1

引用数据类型包括类(class)、接口(interface)和数组

数据类型的字面值及变量定义

  • Java中有三种表示整数的方法:十进制、八进制、十六进制
  • 八进制:以0开头,包括0-7的数字,如:037,056
  • 十六进制表示:以0x或0X开头,包括0-9的数字,及字母a-f,A-F,如:0x12,0xabcf,0XABCFF
  • 整型字面值,如:123,023,0x1357,0X3c,0x1abcL(长整型)

变量声明:

  • 格式:数据类型 变量名;
  • int n; 声明整型变量n
  • long count; 声明长整型变量count

赋值

  • 使用“=”运算符进行赋值。“=”叫作赋值运算符,将运算符右边的值赋给左边的变量。
  • 例:int n; 定义int型变量n
  • n=3; 将3赋值给n
  • 可以在定义变量的同时给变量赋值,即变量的初始化。
  • 例:int n=3;
  • 数据类型 变量名=变量值;
int octal=037; //定义int类型变量存放八进制数据
long longNumber=0xa2cdf3ffL;//定义变量存放十六进制长整型数据
short shortNumber=123;//定义变量存放短整型数据
byte b=10; //定义变量存放byte类型数据
  • 整型字面值默认情况下是int类型,如果表示长整型则在末尾加l或L

浮点型字面值

  • 浮点型字面值默认情况下表示double类型,也可以在值后加d或D
  • 如:123.43d或123.43D
  • 如表示float类型,则需要在字面值后加f或F
  • 如:23.4f或23.4F
public class FloatDemo {
    public static void main(String[] args){
        //定义一个单精度浮点型变量,存放1234.328
        float f=1234.328f;
        System.out.println("f="+f);
        //定义一个双精度浮点型变量,存放5623.465
        double d=5623.464;
        System.out.println("d="+d);
        //将整型赋值给浮点型,会自动类型转换
        double d1=123;
        System.out.println("d1="+d1);
        //变量间的赋值
        double d2=d;
        System.out.println("d2="+d2);
    }
}

输出:
f=1234.328
d=5623.464
d1=123.0
d2=5623.464

基本数据类型变量的存储

在java中的内存空间可以分为栈、堆、常量池等区域。

执行int n=100;语句,会在中开辟int类型大小的空间(4字节),并将100存储到开辟好的空间中。n可以看成是该空间的别名,参与运算时n就代表100

字符型字面值

  • 字符型字面值用单引号内的单个字符表示。
  • 如:’a’,’b’,’$’
  • char a='a';char ch=65;

ASCII码

  • ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)
  • 基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言
  • 使用7位或8位二进制数组合来表示128或256种可能的字符。
  • 标准ASCII码使用7位二进制来表示所有的大写字母和小写字母、数字0-9、标点符号以及在美式英语中使用的控制字符。
  • 后128个称为扩展ASCII码,用于表示特殊符号、外来语字母和图形符号。

Unicode编码

  • Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
  • char c='\u005d';
  • Unicode表示法,在值前加前缀\u
public class CharDemo {

    public static void main(String[] args) {
        // 定义一个变量存放字符'a'
        char a='a';
        System.out.println("a="+a);
        char ch=65535;
        //如果字面值超出char类型所表示的数据范围,需要进行强制类型转换。
        char ch1=(char)65536;
        System.out.println("ch="+ch);
        //定义变量存放unicode编码表示的字符
        char c='\u005d';
        System.out.println("c="+c);
    }

}

运行结果为

a=a
ch=?
c=]

布尔类型和字符串字面值

  • 布尔值只能定义为true和false。例:boolean b=true;
  • 字符串:双引号引起来的0个或多个字符。

转义字符

转义字符 描述
\uxxxx 四位16进制数所表示的字符
\' 单引号字符
\'' 双引号字符
\\ 反斜杠字符
\r 回车
\n 换行
\t 横向跳格
\b 退格

注:java中System.out.println()输出后会换行,而System.out.print()不会换行。
可以用科学计数法表示浮点型数据:

double d = 1.23E5; //1.23乘10的5次方
float f = 1.23e5f;
double d1 = .2 //0.2

demo:

public class StringDemo {

    public static void main(String[] args) {
        // 定义一个空字符串
        String s1="";
        System.out.println("s1="+s1);
        //定义一个字符串,内容是Hello
        String s2="Hello";
        System.out.println("s2="+s2);
        //定义一个包含unicode字符的字符串
        String s3="A\u005d\u005fB";
        System.out.println("s3="+s3);
        //定义一个包含空格的字符串
        String s4="Hello   imooc!";
        System.out.println("s4="+s4);
    }

}

输出:

s1=
s2=Hello
s3=A]_B
s4=Hello   imooc!

数据类型转换

类型转换分为自动类型转换和强制类型转换。

自动类型转换:
无信息丢失的数据类型转换如下:

  • byte -> short -> int -> long
  • char -> int
  • float -> double
  • int -> double

有信息丢失的数据类型转换如下:

  • int -> float
  • long -> float
  • long -> double

如果A类型的数据表示范围比B类型大,则将A类型的值赋值给B类型,需要强制类型转换

double d=123.4;
float f=(float)d;

常量

final关键字定义常量:final int n=5;

常量不可修改,名字建议用大写,多个单词用下划线分隔。

final double PI=3.14;
final double MIN_VALUE=0;