JavaSE基础语法
变量(variable)
变量简介
程序最核心的目的就是为了操作数据,但是数据都在内存中,也就是我们的JVM,而且这个内存区域是循环使用的。
程序中一般使用变量来操纵存储空间中的数据。
Java是一种强类型语言,每个变量使用前必须提前声明,可以合理更加合理的利用空间。
Java变量要素包括变量名,变量类型和作用域。
简单总结: 变量=数据类型+标识符
modifier type identifier [ = value][, identifier [= value] ...] ;
identifier :定义一个变量的名字
type :用来确定占用空间的大小
标识符
给类,接口,方法,变量等起名字的字符序列。用来查找、定位、标明、唯一确认内容。
Java 标识符有如下命名规则:
- 标识符必须以字母、下划线_ 、美元符$开头。
- 标识符其它部分可以是字母、下划线“_”、美元符“ ”和数字的任意组合。
- Java 标识符大小写敏感,且长度无限制。
- 不可以是Java的关键字
- JAVA不采用通常语言使用的ASCII字符集,而是采用unicode这样的标准的国际字符集。因此,这里的字母的含义:英文、汉字等等。
合法的标识符举例:
int a = 3;
int _123 = 3;
int $12aa = 3;
int 变量1 = 55;
不合法的标识符:
int 1a = 3; //不能用数字开头
int a# = 3; //不能包含#这样的特殊字符
int int = 3; //不能使用关键字
关键字
Java关键字是Java语言保留供内部使用的。
关键字也可以称为保留字,它们的意思是一样的。是被系统征用的特殊单词(标识符),而且是被广大程序员所认知的。
部分关键字
不能使用关键字作为变量名或方法名。
数据类型
Java定义数据类型是为了分配不同内存空间。
对内存占用分类
- 基本数据类型(primitive type)
- 基本数据类型占用内存大小是固定的
- ①整数类型:
long
、int
、short
、byte
②浮点类型:float
、double
③字符类型:char
④布尔类型:boolean
- 引用数据类型(reference type)
- 引用数据类型占用的内存大小是未知的
- 类、 接口类型、 数组类型、 枚举类型、 注解类型、 字符串型
基本数据类型
Java中定义了3类8种基本数据类型
- 逻辑型-boolean
- 文本型- char
- 数值型- byte, short, int, long, float, double
数值类型-整型
类型名称 | 字节长度 | 变化数量 | 表值范围 |
---|---|---|---|
byte | 1 | 256 | [-128,127] |
short | 2 | 65536 | [-32768,32767] |
int | 4 | 2^32 | [-2147483648,2147483647] |
long | 8 | 2^64 | [263*-1,263-1] |
数值类型-浮点型
类型名称 | 字节长度 | 字节组成 | 计算公式 |
---|---|---|---|
float | 4 | 1符号位+8次幂位+23精度位 | 【正负】23*2^次幂位 |
double | 8 | 1符号位+11次幂位+52精度位 | 【正负】52*2^次幂位 |
布尔类型
类型名称 | 字节长度 | 变化数量 | 表值 |
---|---|---|---|
boolean | 1位 | 2种 | false/true |
boolean类型有两个值,true和false
boolean 类型用来判断逻辑条件,一般用于程序流程控制 。
字符类型
类型名称 | 字节长度 | 变化数量 | 表值 |
---|---|---|---|
char | 2 | 65536 | 65536个字符 |
- 单引号用来表示字符常量。例如 ‘A’ 是一个字符,它与 “A” 是不同的, “A” 表示含有一个字符的字符串。
- char 类型用来表示在 Unicode 编码表中的字符。
- Unicode 编码被设计用来处理各种语言的所有文字,它占2个字节,可允许有65536 个字符。
- Unicode具有从0到65535之间的编码,通常用从 ’\u0000’ 到 ’\uFFFF’ 之间的十六进制值来表示(前缀为u表示Unicode)
char char1 = 'a';
char char2 ='中';
char c = '\u0061';
char c2 = '\n'; //代表换行符
转义符 | 含义 | unicode值 |
---|---|---|
\b |
退格(backspace) | \u0008 |
\n |
换行 | \u000a |
\r |
回车 | \u000d |
\t |
制表符 | \u0009 |
\" |
双引号 | \u0022 |
\' |
单引号 | \u0027 |
\\ |
反斜杠 | \u005c |
引用数据类型
声明之前我们不知道真实对象所占用内存大小的多少
注:引用数据类型的大小统一为4个字节,记录的是其引用对象的地址!
变量作用域
局部变量(lacal variable) :
- 方法或语句块内部定义的变量。生命周期是从声明位置开始到下一个}为止(Java支持块级作用域)。
- 在使用前必须先声明和初始化(赋初值)
public void incorrectLocalV() {
int i;
//i=10;
int j = i+5 ; // 编译出错,变量i还未被初始化
}
实例变量(成员变量 member variable):
- 方法外部、类的内部定义的变量。从属于对象,生命周期伴随对象始终
- 如果不自行初始化,他会自动初始化成该类型的默认初始值
- 数值型变量初始化成0或0.0
- 字符型变量的初始化值是16位的
\u0000
- 布尔型默认是false
运算符(operator)
Java 语言支持的运算符
- 算术运算符: +,-,*,/,%,++,–
- 赋值运算符 =
- 关系运算符: >,<,>=,<=,==,!=, instanceof
- 逻辑运算符: &&,||,!
- 位运算符: &,|,^,~ , >>,<<,>>> (了解!!!)
- 条件运算符 ?:
- 扩展赋值运算符:+=,-=,=,/=
赋值运算符
=
: 赋值号, 将赋值号右边的数据,赋值给左边的变量(空间)。注意类型必须要一致或兼容。
算数运算符
+,-,*,/,% 和数学中的规则一样
注意:如果只有整数参数与运算,结果也为整数
一元运算符
++(自增),–(自减),了解一个,另一个含义相同
++ 基本含义:在整型变量原来值的基础上增加 1,然后赋值给当前变量
++i(前导自增): 先将变量的值增加 1 , 赋值给自己,再进行其他运算
i++ (后导自增):先取出变量的值使用,然后再将变量的值增加 1, 赋值给自己
int a = 3;
int b = a++; //执行完后,b=3。先给b赋值,再自增。
int c = ++a; //执行完后,c=5。先自增,再给b赋值
注意:java中的乘幂处理
int a = 3^2; //java中不能这么处理, ^是异或符号。 double b = Math.pow(3, 2);
Math类提供了很多科学和工程计算需要的方法和常数。
逻辑运算符
运算符 | 含义 | 说明 |
---|---|---|
& | 与|且 | 可做位运算符 |
| | 或 | 可做位运算符 |
! | 非 | |
^ | 异或 | 可做位运算符 |
&& | 短路与 | |
|| | 短路或 |
位运算符:(了解)
~
: 按位取反
&
: 按位与
|
: 按位或
^
: 按位异或
<<
:左移运算符
>>
:右移运算符
>>>
:无符号移位运算符
右移一位相当于除2取商。
左移一位相当于乘2。
int a = 322;
int b = 3<<2; //相当于:322;
int a = 12/2/2;
int b = 12>>2;
扩展运算符
运算符 | 用法举例 | 等效的表达式 |
---|---|---|
+= | a += b | a=a+b |
… |
字符串连接符
+
运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接。
int c = 12;
System.out.println("c=" + c);
条件运算符
条件运算符和数学中的含义一致,最终结果一定是布尔值。
>
, <
, >=
, <=
一般用于数值型数据的运算, == , != 可对任意数据进行运算。注意比较两个数据是否相等需要使用 ==
。
三目条件运算符
三目条件运算符,语法格式:x ? y : z
其中 x 为 boolean 类型表达式,先计算 x 的值,若为true,则整个三目运算的结果为表达式 y 的值,否则整个运算结果为表达式 z 的值。
int score = 80; int x = -