[Java]变量及其初始化 与 类对象的初始化
1 变量
1.1 变量的【定义】

1.2 变量的【作用域】

1.3 变量的【初始值】

1.4 补充:缓存变量

1.5 变量的【分类】与【未初始化情况】

2 类对象
2.1 类对象的初始化/构造过程
- 1 【对象】的初始化流程

- 2 实验
class Base{
static { System.out.println("[Base:static area]"); }//step1
{ System.out.println("Base:instance area"); }//step3
Base(){ System.out.println("<Base:constructor>"); }//step4
}
public class Create extends Base{
static { System.out.println("[Create:static area]"); }//step2
{ System.out.println("Create:instance area"); }//step5
Create(){//step6
// super();//默认:首先调用super()
System.out.println("<Create:constructor>");
}
public static void main(String args[]){ Create create = new Create(); }
}
//Output
[Base:static area]
[Create:static area]
Base:instance area
<Base:constructor>
Create:instance area
<Create:constructor>
- 3 360公司2020春招技术C卷试题
(题目小有改动)
class Clazz {
public static int x;
public boolean z;
public static String printX(Clazz clazz) { return "x:" + clazz.x; }
public static String printZ(Clazz clazz){ return "z:" + clazz.z; }
}
public class Singleton {
private static Singleton singleton = new Singleton();
public int counter0;//[值域/类的属性 →基本类型变量] 默认 初始化为0
public static int counter1;//[值域/类的属性] 默认 初始化为0
public static int counter2 = 0;//[值域/类的属性]
public Clazz clazz;//[值域/类的属性 → 引用类型变量]
private Singleton() {
int x;//[局部变量]
// System.out.println(x);//局部变量未初始化 ∴编译时报错 [局部变量]
System.out.println(Clazz.printX(clazz));//x:0 /[值域/类的属性 → 引用类型变量 de 静态属性]
// System.out.println(Clazz.printZ(clazz));//运行时报错 (ExceptionInInitializerError) [值域/类的属性 → 引用类型变量 de 非静态属性]
counter0++;
counter1++;
counter2++;
}
public static Singleton getInstance(){ return singleton; }
public static void main(String[] args) {
Singleton singleton = Singleton.getInstance();
System.out.println(singleton.counter0);//1
System.out.println(Singleton.counter1);//1
System.out.println(Singleton.counter2);//0
}
}
x:0
1
1
0
[Java]变量及其初始化 与 类对象的初始化的更多相关文章
- JAVA之等号、传类对象参数与c++的区别
在JAVA中用等号对类对象进行赋值,实际上操作的是对象的地址. eg: package MyText; class ClassA { int value; public void seta(int v ...
- C++派生类中如何初始化基类对象(五段代码)
今天收到盛大的面试,问我一个问题,关于派生类中如何初始化基类对象,我在想派生类对于构造函数不都是先构造基类对象,然后在构造子类对象,但是如果我们在成员初始化列表先初始化派生类的私有成员,在函数内去调用 ...
- Java类的初始化与实例对象的初始化
Java对象初始化详解 2013/04/10 · 开发 · 1 评论· java 分享到:43 与<YII框架>不得不说的故事—扩展篇 sass进阶篇 Spring事务管理 Android ...
- 《Java核心技术》 -- 读书笔记 ② - 类 | 对象 | 接口
对象vs对象变量 “对象” 描述的是一个类的具体实例,他被java虚拟机分配在 "堆" (Heap)中. “对象变量” 为一个对象的引用(对象变量的值=记载着具体对象的位置/地址) ...
- JAVA反射机制教程-获取类对象
1. 什么是类对象 类对象,就是用于描述这种类,都有什么属性,什么方法的 2. 获取类对象 获取类对象有3种方式(1). Class.forName(2). Hero.class(3). new He ...
- 113-PHP使用instanceof判断变量是否为某个类对象
<?php class ren{ //定义人类 } class mao{ //定义猫类 } $ren=new ren(); //实例化一个人类的对象 $mao=new mao(); //实例化一 ...
- java类对象的初始化顺序
在下面这个例子中,我们分别在父类和子类中测试了静态代码块.普通代码块.静态成员变量.普通成员变量.构造器.静态内部类. 一:代码块及变量测试 class Field{ public static St ...
- C++ 类对象的初始化顺序 ZZ
C++构造函数调用顺序 1. 创建派生类的对象,基类的构造函数优先被调用(也优先于派生类里的成员类): 2. 如果类里面有成员类,成员类的构造函数优先被调用:(也优先于该类本身的构造函数 ...
- Java在的时候,类定义HashSet初始化方法
Java非常多的时间,应使用HashSet搜索功能,类的则定义,是HashSet类型的,我们定义数据成员之后,不好直接调用add函数来实现初始化,这个时候怎么办? 我们能够这样来做: public s ...
- java socket之传输实体类对象
一.TCP编程 TCP协议是面向连接的.可靠地.有序的,以字节流的方式发送数据.java实现TCP通信依靠2个类:客户端的Socket类和服务器端的ServerSocket类. 基于TCP通信 ...
随机推荐
- Flink状态后端的对比及机制
1. Flink状态后端的类型: MemoryStateBackend FsStateBackend RocksDBStateBackend 2. 各状态后端对比: 2.1 MemoryStateBa ...
- jsp第7个作业
MailService package mail.service; import java.util.List; import mail.dao.DaoFactory; import mail.d ...
- django_静态文件
**************************************************************************************************** ...
- 正向代理和反向代理和spring的动态代理模式有几种?默认是那种?如何切换?
spring的动态代理模式有几种?默认是那种?如何切换? spring的动态的代理模式有两种 JDK动态代理,基于接口(默认代理模式),CGLIB动态代理(若要使用需要进行配置) JDK动态代理是由j ...
- windows-git-tagslist
windows平台使用 Git-bash + vim + Taglist + ctags + cscope 安装Git for win版 安装ctags for win版,目录添加到环境变量 下载 T ...
- Python使用socks代理
Python使用socks代理 参考:How to make python Requests work via socks proxy - Stack Overflow 使用pysocks库 - Ji ...
- 磊磊零基础打卡算法:day16 c++ Trie树
5.19 Trie树: 用处:快速的查找和高效存储字符串集合的数据结构. 类似如此的查找,存储 其简单的两个操作:插入和删除 插入: void insert(char str[]) { int p; ...
- Python第一次作业(20220909)
实例01:根据身高.体重计算BMI指数 ①:分别定义两个变量"height"和"weight",用于储存身高(单位:米)和体重(单位:千克).使用内置的prin ...
- Vue解决后台传过来的时间展示时带T
用空格替换: {{scope.row.ctime.toLocaleString().replace(/T/g, ' ').replace(/\.[\d]{3}Z/, '')}} 参考作者:https: ...
- 使用loadrunner运行中问题(无代码生成解决方法)
开始录制之后,不能成功录制,工具栏events一直是2,打开新网站不跳动,结束录制之后没有代码生成 进入软件,点击工具栏的录制,选择录制选项,将http高级如下设置 同时也要修改套接字,如下配置 当开 ...