Java基础学习-代码块
/*代码块: * 用{}修饰的代码
* 1.局部代码块:控制变量,存在方法中,控制变量的生命周期(作用域)
* 2.构造代码块:提取构造方法中的共性,每次创建对象,都会执行,并且在构造方法执行之前执行。
* 3.静态代码块:随着类的加载而加载,和对象无关,只加载一次。
*/
1.局部代码块
public class codeblock {
public static void main(String[] args) {
{
int num=10;
}
System.out.println(num);
}
}当前的变量num局部代码块当中所以输出不了num,所以局部代码块控制变量,存在方法中,控制变量的生命周期(作用域)
2.构造代码块
public class codeblock {
public static void main(String[] args) {
student student=new student();
student student2=new student("bai-boy",18);
}
}
class student{
String name;
int age;
/*构造方法*/
public student() {
System.out.println("bai-boy"); System.out.println("18");
}
public student(String name,int age) { this.name=name; this.age=age; System.out.println("bai-boy"); System.out.println("18");}}
这段代码,这里的构造方法中存在一些共性(共同特点),所以我们可以构造代码块去给他装起来。
public class codeblock {
public static void main(String[] args) {
student student=new student();
student student2=new student("bai-boy",18);
}
}
class student{
String name;
int age;
{
System.out.println("bai-boy");
}
/*构造方法*/
public student() { System.out.println("无参空构造");
}
public student(String name,int age) {
this.name=name;
this.age=age; System.out.println("有参构造");
}
}输出的结果为:bai-boy无参空构造bai-boy有参构造所以我们的构造代码块是在方法执行之前执行。
3.静态构造class student{
String name;
int age;
static {
System.out.println("bai-boy");
}
public student() {
System.out.println("无参空构造");
}
public student(String name,int age) {
this.name=name;
this.age=age;
System.out.println("有参构造");
}
}静态构造的与构造代码块的区别是前面有个static(静态),静态随着类的加载而加载,而且只加载一次,与对象创建的次数无关,所以是在类的创建后就打印输出结果为·bai-boy无参空构造有参构造
package Object_Oriented;
/*代码块面试题:填写一下输出的顺序*/
public class code_block_test {
static {
System.out.println("我是code_block_test的静态代码块");//(1)类的加载而加载,所以首先它打印输出
}
{
System.out.println("我是code_block_test的构造代码块");
}
public static void main(String[] args) {//因为code_block_test类没有方法,所以执行main中的代码
codeclass codeclassone=new codeclass();
/*首先创建codeclassone对象,因为codeclass类中有static代码块 所以只调用一次,并且在第一次创建中打印输出static代码块代码
然后打印输出构造代码块,因为是共性所以是在构造方法之前打印输出,所以接下来打印输出构造代码块中的代码*/
codeclass codeclasstwo=new codeclass("bai-boy",18);
}
}
class codeclass{
String name;
int age;
static {
System.out.println("我是codeclass的静态代码块");
}
{
System.out.println("我是codeclass的构造代码块");
}
public codeclass() {
System.out.println("我是codeclass的无参空构造");
}
public codeclass(String name,int age) {
System.out.println("我是codeclass的有参构造");
}
}
/*
所以整个输出结果为:
我是code_block_test的静态代码块
我是codeclass的静态代码块
我是codeclass的构造代码块
我是codeclass的无参空构造
我是codeclass的构造代码块
我是codeclass的有参构造
*/
Java基础学习-代码块的更多相关文章
- Java基础(basis)-----代码块详解
1.静态代码块 格式: static{ 内容..... } 随着类的加载而加载,而且只被加载一次 多个静态代码块之间按照顺序结构执行 优先其他各种代码块以及构造函数先执行 静态的代码块中只能执行静态的 ...
- 【Java基础】2、Java中普通代码块,构造代码块,静态代码块区别及代码示例
Java中普通代码块,构造代码块,静态代码块区别及代码示例.Java中普通代码块,构造代码块,静态代码块区别及代码示例 执行顺序:静态代码块>静态方法(main方法)>构造代码块>构 ...
- 尚学堂JAVA基础学习笔记
目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...
- Java基础学习(2)
Java基础学习(二) 面向对象 对象:客观存在的事物 面向对象:人具体关注的事物的某些信息 类:是模子,确定对象会拥有的特征(属性)和行为(方法) 对象的属性:对象具有的各种特征 对象的方法:对象能 ...
- Java基础学习-- 继承 的简单总结
代码参考:Java基础学习小记--多态 为什么要引入继承? 还是做一个媒体库,里面可以放CD,可以放DVD.如果把CD和DVD做成两个没有联系的类的话,那么在管理这个媒体库的时候,要单独做一个添加CD ...
- Java基础学习笔记(一)
Java基础学习笔记(一) Hello World 基础代码学习 代码编写基础结构 class :类,一个类即一个java代码,形成一个class文件,写于每个代码的前端(注意无大写字母) XxxYy ...
- [转帖]java基础学习总结——多态(动态绑定)
https://www.cnblogs.com/xdp-gacl/p/3644035.html 多态的概念 java基础学习总结——多态(动态绑定) 一.面向对象最核心的机制——动态绑定,也叫多态
- Java基础学习(3)
Java基础学习(三) Java异常 Throwable类:所有异常的祖先类 Error:虚拟机异常.内存错误.没法处理 Exception:编码.环境.用户操作输入出现问题 非检查异常(自动捕获): ...
- java基础学习笔记五(抽象类)
java基础学习总结——抽象类 抽象类介绍
随机推荐
- Angular路由参数传递
一.路由时传递参数的方式 1.在查询参数中传递数据 //页面 <a routerLink="/product" [queryParams]="{id:1}" ...
- 简明python教程三-----函数
函数通过def关键字定义.def关键字后跟一个函数的表标识符名称,然后跟一对圆括号. 圆括号之中可以包括一些变量名,该行以冒号结尾.接下来是一块语句,它们是函数体. def sayHello(): p ...
- Hadoop的eclipse1.1.2插件的安装和配置
我的集群使用的hadoop版本是hadoop-1.1.2.对应的eclipse版本也是:hadoop-eclipse-plugin-1.1.2_20131021200005 (1)在eclipse的d ...
- Hadoop十年解读与发展预测
编者按:Hadoop于2006年1月28日诞生,至今已有10年,它改变了企业对数据的存储.处理和分析的过程,加速了大数据的发展,形成了自己的极其火爆的技术生态圈,并受到非常广泛的应用.在2016年Ha ...
- mysql二进制包安装和遇到的问题
一.编译安装 tar -zxf mysql-5.5.32-linux2.6-x86_64.tar.gz mv mysql-5.5.32-linux2.6-x86_64 /application/mys ...
- Excel数据常用操作,vlookup,text,trim,数据格式导致出错
数据有缺漏,需要在数据前面补零 =TEXT(F70,"000000") 前面是要操作的数据,后面是补几位 匹配数据(将一个表格中的数据进行匹配) =VLOOKUP(C2,aaa,4 ...
- 最小可用 Spring MVC 配置
[最小可用 Spring MVC 配置] 1.导入有概率用到的JAR包, -> pom.xml 的更佳实践 - 1.0 <- <project xmlns="http:// ...
- 配置火星板(MarS Board)的启动参数
昨天终于拿到了MarS Board.本来上周就应该到的,结果销售人员给我发了块BeagleBone Black... 要是给我的是Sabre Lite也就算了.发错货总是消费者吃亏,好像没怎么听说过占 ...
- Windows Server 2008 R2 FTP无法从外部访问的解决方法
在Windows Server 2008 R2中配置好FTP服务器后,可以在本机访问,但是无法从另一台电脑访问.原因就是在于防火墙没有配置好. 1.首先检查服务器管理器中的入站规则,确保已启用FTP服 ...
- const修饰的常量 不能被直接修改 但是可以通过指针进行间接修改
大家都知道如下代码中,被const限定的a是不可以被直接修改的 void main() { const int a = 3; a=1; } 在C++中const修饰的常量,不能被直接修改,但是可以通过 ...