java变量的分类与初始化

2017/6/25

首先学习java最权威的就是官方的文档了,今天从头读了文档,把一些小细节理清楚。

变量

Java语言里的变量分以下4类:

1. Instance Variables: (Non-Static Fields) 就是类里非静态的field

2. Class Variables: (Static Fields) 类里静态的field

3. Local Variables: 局部变量

4. Parameters: 参数

两个术语要注意,分别是field和variable。field是指上面的1和2,是class拥有的。而不是field的变量就叫variable,对应上面的3和4,或者说局部的都是variable。

命名

Java的文档中明确写了推荐的命名方式,这就是为什么java的代码里命名基本都差不多。格式就是用连续的有意义的单词,从第二个单词开始,首字母大写。比如: speed, currentGear

基本数据类型 Primitive Data Type

Java有8个基本数据类型

整数型 4个: byte, short, int, long

浮点 2个: float, double

字符 1个: char

布尔 1个: boolean

他们的默认初始值如下:

Data Type Default Value (for fields)
byte 0
short 0
int 0
long 0L
float 0.0f
double 0.0d
char ‘\u0000‘
String (or any object)   null
boolean false

默认值 Default Value

关于没有初始化的变量的默认的值,c/c++是不会帮你设置的,而java不同,官方文档描述的很清楚:

The eight primitive data types are: byte, short, int, long, float, double, boolean, and char. The java.lang.String class represents character strings. The compiler will assign a reasonable default value for fields of the above types; for local variables, a default value is never assigned. A literal is the source code representation of a fixed value. An array is a container object that holds a fixed number of values of a single type. The length of an array is established when the array is created. After creation, its length is fixed.

就是对于Field来说,自动设成默认值,比如int设成0,object设成null。而对于Variable来说,不会自动设置,如果没有初始化的编译器会报错

参考:

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/variablesummary.html

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/variables.html

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

时间: 2024-12-26 11:45:44

java变量的分类与初始化的相关文章

3.Java变量的声明、初始化和作用域

一.Java变量的声明 在 Java 程序设计中,每个声明的变量都必须分配一个类型.声明一个变量时,应该先声明变量的类型,随后再声明变量的名字.下面演示了变量的声明方式.     double salary;     int age;     Boolean op; 其中第一项称为变量类型,第二项称为变量名.分号是必须的,这是 Java 语句的结束符号. 同一类型的不同变量,可以声明在一行,也可以声明在不同行,如果要声明在同一行中,不同的变量之间用逗号分隔,例如下面的例子.     int st

java——变量分类

java中变量的分类可以按照两种不同的方向进行分类:按被声明的位置划分.按照所属的数据类划分.下面就具体解析一下这两种分类. 按被声明的位置划分 局部变量:方法和语句块内定义的的变量. 在定义局部变量时,必须对其进行初始化. 成员变量:方法外部,类的内部定义的变量. 成员变量可以是java语言中任何一种数据类型(包括基本类型和引用类型) 在定义成员变量时对其进行初始化,如果不进行初始化,java使用默认值对其进行初始化. 按所属的数据类型划分 基本数据类型 内存分析.例如'int i=0;',在

4、Java变量和变量的分类

变量 变量是什么? 变量本质上就是代表一个"可操作的存储的空间",在定义之后空间位置是确定的,但是里面放置什么值是不确定的,我们操作的时候是通过变量名来操作对应的存储空间的,以此来操作对应的存储空间里面的值. ??Java是一种强类型语言,第个变量都必须声明其数据类型.变量的数据类型决定了变量占存储空间的大小. ??变量作为程序中最基本的存储单元,要素有变量名,作用域,变量类型. ??变量在使用前必须声明,只有声明以后才能分配对应长度的存储空间. 变量的声明 int a = 1; do

Java变量方法初始化顺序

面试的时候,经常会遇到这样的考题:给你两个类的代码,它们之间是继承的关系,每个类里只有构造器方法和一些变量, 构造器里可能还有一段代码对变量值进行了某种运算,另外还有一些将变量值输出到控制台的代码,然后让我们判断输出的结果.这实际上是在考查我们对于继承情况下类的初始化顺序的了解. 我们大家都知道,对于静态变量.静态初始化块.变量.初始化块.构造器,它们的初始化顺序以此是 (静态变量.静态初始化块)>(变量.初始化块)>构造器. 我们也可以通过下面的测试代码来验证这一点: 父类--静态变量 父类

C、C++、JAVA编译器是如何处理未经初始化的变量的。

三种语言中,静态和全局变量的初始化默认置0.局部变量可以不用初始化,C语言中编译时可能会隐式地将其初始化为0xcc(即"debug magic number").因为编译器的不同,局部变量被初始化的值也不同.这样做也是为了让程序员能更快地找出错误原因. 但是java对局部变量是不会进行初始化的,你不能对一个未经初始化的变量进行操作题目中所说的未经初始化,其实相当于在说变量没有被赋初值,即人为地为变量赋值. 编译器对不同的内存区会采用不同的初始化方法,栈中的变量不会被初始化,堆中(全局变

Java变量初始化的时机

对于JAVA中变量的初始化是一个很基础的问题,其中的一些问题也是易被学习者所忽略.当在编写代码的时候碰到时,常被这些问题引发的错误,感觉莫名其妙.而且现在许多大公司的面试题,对于这方面的考查也是屡试不爽.以下是对java变量初始化的时机的分析. [java变量执行初始化的步骤] java是一门强类型语言,因此java语言规定每个变量必须先声明,然后才能使用,声明变量时必须指定该变量的数据类型.首先看下面这条语句的执行过程: int a = 5; 实际上面这条语句会被拆分成两个过程执行: (1)i

JAVA当中变量什么时候需要初始化?

1. 对于类的成员变量,不管程序有没有显式的进行初始化,Java虚拟机都会先自动给它初始化为默认值. 默认值如下:             Boolean      false             Char           '\u0000'(null)             byte            (byte)0             short           (short)0             int               0             lo

【细说Java】Java变量初始化顺序

Java的变量初始化顺序,对这里一直似懂非懂,面试的时候也经常被问到,但答的一直不好,现在整理记录一下,以后忘记了可以来看看. 程序分为两个部分,第一个部分不考虑继承,第二个部分考虑继承: (1)不考虑继承的情况 代码如下: public class JavaTest { public JavaTest() { System.out.println("执行JavaTest构造方法1"); } public JavaTest(String param) { System.out.prin

java变量初始化

源代码变成可运行程序,需要经过编译——>加载——>运行几个阶段. final修饰的变量必须显性进行初始化.初始化有三种方式: (1)直接初始化 (2)动态代码块 (3)构造函数 如果一个变量既被final修饰又被static修饰,那么这个变量一定要被初始化(满足final特性),另外要么直接初始化要么在静态 代码块中进行初始化(满足static特性). final修饰的变量的初始化先于static修饰的变量,static修饰的变量先于普通变量的初始化. 如果是final级别的,那么虽然也是根据