之前已经总结了对象的状态存储中,Java程序语言经常会使用变量,下面总结变量与字段的关系,变量的命名规则和约定、基本的数据类型、默认值和字。
一. 变 量
1).实例变量(非静态字段)。对象将个体的状态存入非静态字段中,也就是说不用关键字 static 声明的字段,值唯一。
2).类变量。是用关键字 static 生命的任意字段,
3).局部变量。局部变量的声明没有特殊的关键字,完全取决于变量的位置,也就是说在方法体内生效,因此,局部变量只对声明他的方法可见,类的其他部分都不能访问该局部变量。
4).参数。即为方法的参数,参数总被归于变量,而非字段
二. 数据类型
数据类型 | (字段)默认值 |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d |
char | “\u0000” |
string(或任意对象) | null |
boolen | false |
三. 数组
数组是固定数目的单一数据类型值得容器对象。创建数组是要指定其长度;创建后,其长度就固定了。下面的ArrayDemo创建了一个整型数组anArray,并赋予了anArray[1]的值为1
public class ArrayDemo{
public static void main(String[] args){
int[] anArray = new int[10];
anArray[0]=1;
for(int i=1;i<10;i++){
anArray[i]=anArray[i-1]+2;
}
for(int j=0;j<10;j++){
System.out.println(anArray[j]);
}
}
}
(1)声明变量引用数组
与其他类型的变量声明一样,数组声明也包含两个组件:数组类型和数组名。写法type[]。数组名可以是任意名称,但是该声明不会创建数组,而只是告诉编译器该变量可用于保存特定类型的数组。
(2)创建、初始化和访问数组
创建数组的方法是使用new运算符
anArray = new int[10]
也可以用两个或多个方括号声明多维数组,如String[][] names。其元素必须用相应的索引值来访问。
(3)复制数组
Java中System类有arraycopy方法,可用于数组之间数据的高校复制:
public static void arraycopy(Object src,int srcPos,
Object dest,int destPos,int length)
两个 object 参数分别指定源数组和目的数组,三个 int 参数分别指定源数组的起始位置、目的数组的起始位置和待复制的元素个数。如下:
public class ArrayCopyDemo{
public static void main(String[] args){
char[] copyForm = {'d','e','f','g','h','i','j','k','l','m'};
char[] copyTo = new char[7];
System.arraycopy(copyForm,2,copyTo,0,7);
System.out.println(new String(copyTo));
}
}
输出结果如下:
fghijkl
四. 运算符
简单赋值运算符 | |
---|---|
= | 简单赋值运算符 |
算术运算符 | |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取模 |
一元运算符 | |
---|---|
+ | 表示正值 |
- | 一元减运算符;否定表达式 |
++ | 递增运算符;值将加一 |
– | 递减运算符;值将减一 |
! | 逻辑补运算符;反转布尔值 |
等式和关系运算符 | |
---|---|
== | 等于 |
!= | 不等于 |
> | 大于 |
< | 小于 |
条件运算符 | |
---|---|
&& | 逻辑与 |
?: | 三元运算符 |
类型比较运算符 | |
---|---|
instanceof | 将对象和指定的类型进行比较 |
位与移位运算符 | |
---|---|
~ | 一元按位求补 |
<< | 带符号左移 |
> | 带符号右移 |
> | 无符号右移 |
& | 按位与 |
^ | 按位异或 |
类型比较运算符例子:
public class test{
public static void main(String[] args){
Parent obj1 = new Parent();
Parent obj2 = new Child();
System.out.println("obj1 instanceof Parent:"
+ (obj1 instanceof Parent));
System.out.println("obj1 instanceof Child:"
+ (obj1 instanceof Child));
System.out.println("obj1 instanceof MyInterface:"
+ (obj1 instanceof MyInterface));
System.out.println("obj2 instanceof Parent:"
+ (obj1 instanceof Parent));
System.out.println("obj2 instanceof Child:"
+ (obj1 instanceof Child));
System.out.println("obj2 instanceof MyInterface:"
+ (obj1 instanceof MyInterface));
}
}
class Parent{}
class Child extends Parent implements MyInterface{}
interface MyInterface{}
结果输出如下:
obj1 instanceof Parent:true
obj1 instanceof Child:false
obj1 instanceof MyInterface:false
obj2 instanceof Parent:true
obj2 instanceof Child:false
obj2 instanceof MyInterface:false