变量:
变量是Java程序的一个基本存储单元。变量由一个标识符,类型及一个可选初始值的组合定义。此外,所有的变量都有一个作用域,定义变量的可见性,生存期。
定义一个变量
定义一个整型变量num:
int num = 10; num是标识符号,也叫变量名称,int是变量类型, 10是初始值可选
变量分为两种:基本类型的变量和引用类型的变量。
在Java中,所有的变量必须先声明再使用。基本的变量声明方法如下:
type identifier = value,identifier = value ...] ;
type是Java的基本类型之一,或类及接口类型的名字。标识符(identifier)是变量的名字,指定一个等号和一个值来初始化变量。
请记住初始化表达式必须产生与指定的变量类型一样(或兼容)的变量。声明指定类型的多个变量时,使用逗号将各变量分开;
变量名必须是一个合法的字符,不能以数字开头,而且不能使用java的保留字;
变量类型转换
变量的一个重要特点是可以重新赋值。不仅可以重新赋值同类型的,还可以赋值不同类型的,在赋值不同类型时,需要进行类型转换;
如果这2种类型是兼容的,那么Java将自动地进行转换。例如,把int类型的值赋给long类型的变量,这种类型转换都是可以隐式实现的。 不兼容的类型之间的转换必须使用一个强制类型转换,完成两个不兼容的类型之间的显式变换。
- 自动类型转换(automatic type conversion) 需要满足以下两个条件 这2种类型是兼容的。 目的类型数的范围比来源类型的大
数字类型,包括整数(integer)和浮点(floating-point)类型都是彼此兼容的,但是,数字类型和字符类型(char)或布尔类型(bollean)是不兼容的。字符类型(char)和布尔类型(bollean)也是互相不兼容的;
- 不兼容类型的强制转换所谓强制类型转换只不过是一种显式的类型变换。它的通用格式如下:
(target-type)value
其中,目标类型(target-type)指定了要将指定值转换成的类型。例如,将int型强制转换成byte型。如果整数的值超出了byte型的取值范围,它的值将会因为对byte型值域取模(整数除以byte得到的余数)而减少。
当把浮点值赋给整数类型时一种不同的类型转换发生了:截断(truncation)。你知道
整数没有小数部分。这样,当把浮点值赋给整数类型时,它的小数部分会被舍去。例如,
如果将值1.23赋给一个整数,其结果值只是1,0.23被丢弃了。当然,如果浮点值太大而不
能适合目标整数类型,那么它的值将会因为对目标类型值域取模而减少。
常量
有点变量只能被赋值一次,一旦被赋值之后就不能再次更改了;这种变量称为常量;
在Java中,使用关键字final标识常量;
例如:
public final int NUM = 20;
常量一般习惯为全部大写;通常定义在类中,可以在多个方法中使用;通常称为类常量;
关键字
在Java中,有一部分保留字是不能设置为类,变量或者方法的名称得;这部分称为Java保留字符;也叫Java关键字;
JAVA中的关键字有以下几种:
关键字 | 含义 |
---|---|
native | 由宿主系统实现的一个方法 |
new | 分配一个新对象或数组 |
null | 一个空引用 |
package | 包含类的一个包 |
transient
是被 transient 修饰的成员变量,在序列化的时候其值会被忽略,在被反序列化后, transient 变量的值被设为初始值, 如 int 型的是 0,对象型的是 null。
synchronized
synchronized 是 Java 提供的一个并发控制的关键字。主要有两种用法,分别是同步方法和同步代码块。也就是说,synchronized 既可以修饰方法也可以修饰代码块。被 synchronized 修饰的代码块及方法,在同一时间,只能被单个线程访问。
volatile
和 synchronized 不同,volatile 是一个变量修饰符,只能用来修饰变量。无 法修饰方法及代码块等。volatile 的用法比较简单,只需要在声明一个可能被多线程同时访问的变量时,使用volatile 修饰就可以了
static
static 表示“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态 static代码块 用 static 表示变量的级别,一个类中的静态变量,不属于类的对象或者实例。因 为静态变量与所有的对象实例共享,因此他们不具线程安全性。
与静态变量一样,静态方法是属于类而不是实例。一个静态方法只能使用静态变量和调用静态方法。通常静态方法通常用于想给其他的类使用而不需要创建实例。 Java 的静态块是一组指令在类装载的时候在内存中由 Java ClassLoader 执行。静态块常用于初始化类的静态变量。大多时候还用于在类装载时候创建静态资源。Java 不允许在静态块中使用非静态变量。一个类中可以有多个静态块; Java 可以嵌套使用静态类,但是静态类不能用于嵌套的顶层。静态嵌套类的使用与其他顶层类一样,嵌套只是为了便于项目打包。
数组
数组是一种数据类型;是相同类型变量的集合,可以使用共同的名字引用它。数组可被定义为任何类型,可以是一维或多维。数组中的一个特别要素是通过下标来访问它。
定义一个数组类型的变量,使用数组类型“类型[]”,例如, int[] 。和单个基本类型变量不同,数组变量初始化必须使用;
也可以在定义数组时直接指定初始化的元素,这样就不必写出数组大小,而是由编译器自动推算数组大小。
Java的数组有几个特点:
数组所有元素初始化为默认值,整型都是 0 ,浮点型是 0.0 ,布尔型是 false ; 数组一旦创建后,大小就不可改变;
数组又可以分为一维数组和多维数组
一维数组:
一维数组(one-dimensional array)实质上是相同类型变量列表。要创建一个数组,你必须首先定义数组变量所需的类型。通用的一维数组的声明格式是:
type var-name ;
其中,type定义了数组的基本类型。基本类型决定了组成数组的每一个基本元素的数
据类型。这样,数组的基本类型决定了数组存储的数据类型。
运算符new被应用到一维数组时,它的一般形式如下:
array-var = new typesize;
其中,type指定被分配的数据类型,size指定数组中变量的个数,array-var 是被链接到
数组的数组变量。也就是,使用运算符new来分配数组,你必须指定数组元素的类型和数
组元素的个数。用运算符new分配数组后,数组中的元素将会被自动初始化为零。
多维数组:
在Java中,多维数组(multidimensional arrays)实际上是数组的数组。
定义多维数组变量要将每个维数放在它们各自的方括号中。
当你给多维数组分配内存时,你只需指定第一个(最左边)维数的内存即可。你可以
单独地给余下的维数分配内存。
另一种数组声明语法
声明数组还有第二种格式:
type var-name;
这里,方括号紧跟在类型标识符type的后面,而不是跟在数组变量名的后面。例如,
下面的两个定义是等价的:
代码语言:java复制int al[] = new int[3];
int[] a2 = new int[3];
这种数组声明格式主要是为了方便。
我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!