Java语言基础
Java变量——
数据类型 | 默认值 | 存储格式 | 数据范围 |
---|---|---|---|
short | 0 | 2个字节 | -32,768到32767 |
int | 0 | 4个字节 | -2,147,483,648到2,147,483,647 |
byte | 0 | 1个字节 | -128到127 |
char | 空 | 2个字节 | Unicode的字符范围:’\u0000’(即为0)到’\uffff’(即为65,535) |
long | 0L或0l | 8个字节 | -9,223,372,036,854,775,808到9,223,372,036, 854,775,807 |
float | 0.0F或0.0f | 4个字节 | 32位IEEEE 754单精度范围 |
double | 0.0或0.0D(d) | 8个字节 | 64位IEEE 754双精度范围 |
boolean | false | 1位 | true(1)或false(0) |
在 Java 中,变量需要先声明(declare)才能使用。
局部变量——必须初始化
- 局部变量声明在方法、构造方法或者语句块中;
- 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁;
- 访问修饰符不能用于局部变量;
- 局部变量只在声明它的方法、构造方法或者语句块中可见;
- 局部变量是在栈上分配的。
- 局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。
实例变量(实例化-new)
- 实例变量声明在一个类中,但在方法、构造方法和语句块之外;
- 当一个对象被实例化之后,每个实例变量的值就跟着确定;
- 实例变量在对象创建的时候创建,在对象被销毁的时候销毁;
- 实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息;
- 实例变量可以声明在使用前或者使用后;
- 访问修饰符可以修饰实例变量;
- 实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见;
- 实例变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,也可以在构造方法中指定;
- 实例变量可以直接通过变量名访问。但在静态方法以及其他类中,就应该使用完全限定名:ObejectReference.VariableName。
类变量(静态变量)
- 类变量也称为静态变量,在类中以static关键字声明,但必须在方法、构造方法和语句块之外。
- 无论一个类创建了多少个对象,类只拥有类变量的一份拷贝。
- 静态变量除了被声明为常量外很少使用。常量是指声明为public/private,final和static类型的变量。常量初始化后不可改变。
- 静态变量储存在静态存储区。经常被声明为常量,很少单独使用static声明变量。
- 静态变量在程序开始时创建,在程序结束时销毁。
- 与实例变量具有相似的可见性。但为了对类的使用者可见,大多数静态变量声明为public类型。
- 默认值和实例变量相似。数值型变量默认值是0,布尔型默认值是false,引用类型默认值是null。变量的值可以在声明的时候指定,也可以在构造方法中指定。此外,静态变量还可以在静态语句块中初始化。
- 静态变量可以通过:ClassName.VariableName的方式访问。
- 类变量被声明为public static final类型时,类变量名称必须使用大写字母。如果静态变量不是public和final类型,其命名方式与实例变量以及局部变量的命名方式一致。
Java常量——
常量代表程序运行过程中不能改变的值。在Java编码规范中,要求常量名必须大写。
常量的语法格式如下:
-
final 数据类型 常量名称 = 值;
-
final 数据类型 常量名称1 = 值1, 常量名称2 = 值2,……常量名称n = 值n;
例如:
final double PI = 3.14; final char MALE=‘M’,FEMALE=‘F’;
Java注释——
一般在 Java 里有三种注释:
-
行注释
//
:只注释一行 -
段注释
/*...*/
:注释若干行 -
文档注释
/**...*/
:注释若干行,并写入 javadoc文档
Java自动类型转换和强制类型转换——
在Java程序中,不同的数据类型有些时候需要进行相互转换。数据类型转换就分为了自动类型转换
和强制类型转换:
自动类型转换是在程序执行过程中,不需要我们去特殊声明或者操作,变量由于需要而自动转换成了合适的数据类型。
自动类型转换需要满足下面的两个条件:
-
目标类型与原类型兼容
-
目标类型的字节数大于或等于原类型字节数
基本数据类型中,布尔类型boolean占有一个字节,由于其本身所代表的特殊含义,boolean类型与其他基本类型不能进行类型的转换(既不能进行自动类型的提升,也不能强制类型转换), 否则,将编译出错。
Java位运算符——【a=60;b=13】
位运算符 | 名称 | 描述 | 举例 |
---|---|---|---|
& | 按位与 | 如果相对应位都是1,则结果为1,否则为0 | (a&b),得到12,即0000 1100 |
丨 | 按位或 | 如果相对应位都是0,则结果为0,否则为1 | (a丨b)得到61,即 0011 1101 |
^ | 按位异或 | 如果相对应位值相同,则结果为0,否则为1 | (a^b)得到49,即 0011 0001 |
~ | 按位补 | 翻转操作数的每一位,即0变成1,1变成0 | (〜a)得到-61,即1100 0011 |
<< | 按位左移 | 左操作数按位左移右操作数指定的位数 | a<<2得到240,即 1111 0000 |
>> | 按位右移 | 左操作数按位右移右操作数指定的位数 | a>>2得到15即 1111 |
>>> | 按位右移补零 | 左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充 | a>>>2得到15即0000 1111 |
Java逻辑运算符——【布尔变量a为真,变量b为假】
逻辑运算符 | 名称 | 描述 | 类型 | 举例 |
---|---|---|---|---|
&& | 与 | 当且仅当两个操作数都为真,条件才为真 | 双目运算符 | (a && b)为假 |
|| | 或 | 两个操作数任何一个为真,条件为真 | 双目运算符 | (a || b)为真 |
! | 非 | 用来反转操作数的逻辑状态。如果条件为真,则逻辑非运算符将得到假 | 单目运算符 | (!a)为假 |
^ | 异或 | 如果两个操作数逻辑相同,则结果为假,否则为真 | 双目运算符 | (a ^ b)为真 |
Java引用——
引用:Java 中一切都是对象,但操作的标识符实际是对象的一个引用。
例:
String s;
在这里,创建的是引用
,不是对象
。创建引用后,一种安全的做法是对其进行初始化。
String s = "abc"; String s = new String("abc");
通常采用new操作符
生成一个新对象,然后将引用与该对象相关联。
想要比较对象的内容是否相同时,Java 提供了一个特殊的方法equals()
,它不适用于基本类型
,基本类型使用==和!=进行比较。
Java条件运算符——
条件运算符?:
便是唯一的一个三目运算符了。
语法形式:布尔表达式?表达式1 : 表达式2
运算过程:如果布尔表达式的值为true
,则返回 表达式1
的值,否则返回 表达式2
的值。
Java条件控制语句——【if;if...else if...else;switch...case...break...default】
if 语句
if(条件){ 条件成立时执行的代码 }
if...else 语句当条件成立时,则执行 if 部分的代码块; 条件不成立时,则进入 else 部分。
if(条件){ 代码块1 } else{ 代码块2 }
多重 if 语句,在条件 1 不满足的情况下,才会进行条件 2 的判断,以此向下;当前面的条件均不成立时,最终执行 else 块内的代码。
if(条件1){ 代码块1 } else if(条件2){ 代码块2 } ... else { 代码块n }
if 语句是可以在内层进行嵌套的。嵌套 if 语句,只有当外层 if 的条件成立时,才会判断内层 if 的条件。
if(条件1){ if(条件2){ 代码块1 } else{ 代码块2 } } else{ 代码块3 }
switch语句——当 switch 后表达式的值和 case 语句后的值相同时,从该位置开始向下执行,直到遇到 break 语句或者 switch 语句块结束;如果没有匹配的 case 语句则执行 default 块的代码。
switch(表达式){ case 值1: 代码块1 break; case 值2: 代码块2 break; ... default: 默认执行的代码块 }
Java循环控制语句——【while;do...while;for】
while语句——while 的执行过程是先判断,再执行。
1. 判断 while 后面的条件是否成立( true or false )
2. 当条件成立时,执行循环内的代码,然后重复执行1.、2., 直到循环条件不成立为止
while(条件){ 代码块 }
do...while语句——执行过程是先执行,再判断(所以循环内的代码至少会执行一次)。
1. 先执行一遍循环操作,然后判断循环条件是否成立
2. 如果条件成立,继续执行1.、2.,直到循环条件不成立为止
do{ 代码块 }while(条件);
for语句 ——相比 while 和 do-while 语句结构更加简洁易读,它的执行顺序:
1.执行循环变量初始化部分,设置循环的初始状态,此部分在整个循环中只执行一次
2. 进行循环条件的判断,如果条件为 true,则执行循环体内代码;如果为 false ,则直接退出循环
3.执行循环变量变化部分,改变循环变量的值,以便进行下一次条件判断
4.依次重新执行2.、3.、4.,直到退出循环
for(循环变量初始化; 循环条件; 循环变量变化){ 循环操作 }
Java跳转语句——【break;continue】
break语句——跳出,经常用在条件和循环语句中,用来跳出循环语句的。
continue语句——作用是跳过循环体中剩余的语句执行下一次循环。