java中声明变量和初始化变量的相关感想
2016-11-09 15:32
260 查看
1、定义基本类型变量时
(1)定义局部基本类型变量
定义局部变量时,在使用该变量之前必须对其进行赋值初始化,否则编译器会报错,建议声明变量和赋值同时进行。
(2)定义类全局基本类型变量
无论是静态全局变量还是动态全局变量,在创建对象new object()之时,系统会自动对全局基本类型变量进行初始化,除了定义全局变量之时就对其初始化之外。
2、定义非基本类型变量时,如String List 或其他自定义类
(1)局部变量时
同基本类型变量一样,使用前必须对其进行初始化,否则编译器会报错。
(2)全局变量
若只是声明变量,如String s, List l, object o,创建对象时,会将其赋值为null
若声明变量的同时并进行初始化,String s=new String();List l=new List();object o=new object();此时会指向一片对象内存区域,不再为null, 如String为空串,List为空list,object为系统初始化内容。
总结:局部变量使用前,必须进行初始化,否则编译器会报错。全局变量使用前若没有手动初始化,系统会自动对其进行初始化。对于基本类型,系统会为其赋值(int型=0,short型=(short)0,byte=(byte)0,boolean型=false,long型=0L,char型=‘\u0000’或null,float型=0.0f,double型=0.0),对于非基本数据类型会赋值为null(初始化了除外)
String s=new String();String类型初始化值为""空串
List l=new List();List类型初始化值为[]空list但不是nul。
其他自定义object o=new object();初始化值指向创建改对象的内存区域。
(1)定义局部基本类型变量
定义局部变量时,在使用该变量之前必须对其进行赋值初始化,否则编译器会报错,建议声明变量和赋值同时进行。
(2)定义类全局基本类型变量
无论是静态全局变量还是动态全局变量,在创建对象new object()之时,系统会自动对全局基本类型变量进行初始化,除了定义全局变量之时就对其初始化之外。
2、定义非基本类型变量时,如String List 或其他自定义类
(1)局部变量时
同基本类型变量一样,使用前必须对其进行初始化,否则编译器会报错。
(2)全局变量
若只是声明变量,如String s, List l, object o,创建对象时,会将其赋值为null
若声明变量的同时并进行初始化,String s=new String();List l=new List();object o=new object();此时会指向一片对象内存区域,不再为null, 如String为空串,List为空list,object为系统初始化内容。
总结:局部变量使用前,必须进行初始化,否则编译器会报错。全局变量使用前若没有手动初始化,系统会自动对其进行初始化。对于基本类型,系统会为其赋值(int型=0,short型=(short)0,byte=(byte)0,boolean型=false,long型=0L,char型=‘\u0000’或null,float型=0.0f,double型=0.0),对于非基本数据类型会赋值为null(初始化了除外)
String s=new String();String类型初始化值为""空串
List l=new List();List类型初始化值为[]空list但不是nul。
其他自定义object o=new object();初始化值指向创建改对象的内存区域。
import java.util.ArrayList; import java.util.List; public class test { public static void main(String[] args) { MyTest mt=new MyTest(); System.out.println(mt); } } class MyTest {
int a;
long b; String c=new String(); char d; List list=new ArrayList(); MyTest1 mt1=new MyTest1(); public String toString() { return "MyTest[a="+a+",b="+b+",c="+c+",d="+d+",list="+list+",mt1="+mt1+",MyTest2.f="+MyTest2.f+"]"; } } class MyTest1 { int e; public String toString() { return "MyTest1[e="+e+"]"; } } class MyTest2 { static int f; }
输出结果为:MyTest[a=0,b=0,c=,d= ,list=[],mt1=MyTest1[e=0,],MyTest2.f=0]
相关文章推荐
- 关于Java变量、数组、对象的声明、初始化与访问方式-----《疯狂Java突破程序员基本功的16课》读书笔记----第一章
- Java变量的声明、内存分配及初始化
- 关于Java数组声明、创建、初始化的相关介绍
- Java变量的声明、初始化和作用域
- Java变量的声明、初始化和作用域
- java 变量初始化默认值相关问题
- 【Java】变量声明、定义、赋值与初始化区别
- Java变量的声明、初始化和作用域
- Java第11次作业:什么是继承?继承的好处?什么是覆写?super()?构造代码块?子父类初始化顺序? 抽象类能用final声明吗?final关键字声明类 方法 变量以及全局常量?抽象类的构造方法?
- Java变量的声明、初始化和作用域
- 关于Java变量的声明、内存分配及初始化详解
- Java 变量的声明及初始化
- Java变量的声明、内存分配及初始化
- Thinking in java第四版--第2章习题答案--关键字、变量、声明、赋值、初始化、类型转换
- java内存相关及程序初始化顺序
- 关于java中变量的初始化的问题
- Java中变量的初始化顺序
- java数组的声明创建及初始化
- 局部变量声明后最好立即初始化
- JAVA里面局部变量需要显式初始化,谁能解释编译器为什么这样设计?