什么是静态代码块?java中如何使用空参构造方法自动生成不同名字的对象,使用非静态的属性和静态属性有什么区别,原因是什么?如何理解static关键字
静态代码块?类加载就执行,最先执行
class demo{
static int num;
static{
num=10;
num*=3;
System.out.println("haha");
}
static void show(){
System.out.println("num="+num);
}
}
空参构造自动生成对象时,使用非静态的属性
代码:
package com.swift;
//使用无参构造方法自动生成对象,序号不断自增
public class Person {
private int count; //如果在定义类时,使用的是非静态的属性,则得到的结果都是相同的,都为1。因为这个count生命周期短,只在对象内部
public int id;
public String name;
public int age;
public String city;
public Person() {
super();
count++;
this.id=count;
this.name="NoName-"+count;
this.age=20;
this.city="蜀国"+count; }
public Person(int id ,String name,int age,String city) {
this.id=id;
this.name=name;
this.age=age;
this.city=city;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getInfo() {
return "The Person is id=" + id + ", name=" + name + ", age=" + age + ", city=" + city ;
} }
结果:
空参构造自动生成对象时,使用静态的属性
代码:
package com.swift;
//使用无参构造方法自动生成对象,序号不断自增
public class Person {
private static int count; //如果在定义类时,使用的是静态的属性,则得到的结果是不同的。count生命周期长,与类相同
public int id;
public String name;
public int age;
public String city;
public Person() {
super();
count++;
this.id=count;
this.name="NoName"+count;
this.age=20;
this.city="蜀国"; }
public Person(int id ,String name,int age,String city) {
this.id=id;
this.name=name;
this.age=age;
this.city=city;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getInfo() {
return "The Person is id=" + id + ", name=" + name + ", age=" + age + ", city=" + city ;
} }
结果:
Demo类
package com.swift; public class DemoPerson { public static void main(String[] args) {
new Person();
new Person();
new Person();
new Person();
new Person();
// Person p3=new Person();
// Person p4=new Person();
// p1.id=100001;
// p1.name="刘备";
// p1.age=40;
// p1.city="蜀国";
// p2.id=100002;
// p2.name="关羽";
// p2.age=35;
// p2.city="蜀国";
// p3.id=100003;
// p3.name="张飞";
// p3.age=33;
// p3.city="蜀国";
// p4.id=100004;
// p4.name="诸葛亮";
// p4.age=30;
// p4.city="蜀国";
// System.out.println(p1.getInfo());
// System.out.println(p2.getInfo());
// System.out.println(p3.getInfo());
// System.out.println(p4.getInfo());
} }
什么是静态代码块?java中如何使用空参构造方法自动生成不同名字的对象,使用非静态的属性和静态属性有什么区别,原因是什么?如何理解static关键字的更多相关文章
- 堆、栈、方法区、静态代码块---Java
java 堆.栈.方法区 堆区: 1.存储的全部是对象,每个对象都包含一个与之对应的class的信息.(class的目的是得到操作指令) 2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基 ...
- Java 面向对象—非静态代码块
一.非静态代码块 1.声明格式 [修饰符] class 类名 { { 非静态代码块 } } 2.非静态代码块中的代码执行时机 (1)在"每次"创建对象的时候执行 (2)比构造方法早 ...
- java构造代码块与静态代码块
一:构造代码块 1.概述 作用:给对象初始化. 优先级:优先于对象的构造函数之前执行. { /*构造代码块的代码*/ } 给所有的对象统一的初始化,而构造函数只是给特定的对象初始化,因为构造函数可以重 ...
- Java中静态代码块、构造代码块、构造函数、普通代码块
在Java中,静态代码块.构造代码块.构造函数.普通代码块的执行顺序是一个笔试的考点,通过这篇文章希望大家能彻底了解它们之间的执行顺序. 1.静态代码块 ①.格式 在java类中(方法中不能存在静态代 ...
- java中的静态变量、静态方法与静态代码块详解与初始化顺序
我们知道类的生命周期分为装载.连接.初始化.使用和卸载的五个过程.其中静态代码在类的初始化阶段被初始化. 而非静态代码则在类的使用阶段(也就是实例化一个类的时候)才会被初始化. 静态变量 可以将静 ...
- java中的静态变量,静态方法与静态代码块详解
java中的类的生命周期分为装载,连接,初始化,使用,和卸载五个过程. 而静态代码在类的初始化阶段被初始化. 而非静态代码则在类的使用阶段(也就是实例化一个类的时候)才会被初始化. 静态变量 可以将静 ...
- Java中普通代码块,构造代码块,静态代码块区别及代码示例
//执行顺序:(优先级从高到低.)静态代码块>mian方法>构造代码块>构造方法. 其中静态代码块只执行一次.构造代码块在每次创建对象是都会执行. 1 普通代码块 1 //普通代码块 ...
- Java中普通代码块,构造代码块,静态代码块执行顺序
//执行顺序:(优先级从高到低.)静态代码块>mian方法>构造代码块>构造方法. 其中静态代码块只执行一次.构造代码块在每次创建对象是都会执行. 1 普通代码块 1 //普通代码块 ...
- Java中普通代码块,构造代码块,静态代码块的代码演示样例及区分
//运行顺序:(优先级从高到低.)静态代码块>mian方法>构造代码块>构造方法. 当中静态代码块仅仅运行一次.构造代码块在每次创建对象是都会运行. 1 普通代码块 <span ...
随机推荐
- 【JOI Camp 2015】IOIO卡片占卜——最短路
题目 [题目描述]K 理事长是占卜好手,他精通各种形式的占卜.今天,他要用正面写着 `I` ,背面写着 `O` 的卡片占卜一下日本 IOI 国家队的选手选择情况.占卜的方法如下:1. 首先,选取五个正 ...
- IT兄弟连 JavaWeb教程 AJAX的技术构成
Ajax并不是新的技术,而是之前技术的整合,其中包括JavaScript.HTML.CSS.DOM.XMLHttpRequest.XML和JSON是构成Ajax技术体系技术基石. JavaScript ...
- Mac PyCharm2018破解
1.下载破解补丁 https://link.jianshu.com/?t=http%3A%2F%2Fidea.lanyus.com%2Fjar%2FJetbrainsCrack-2.7-release ...
- 【VueJS】sublime text3支持VueJS语法高亮显示插件vue-syntax-highlight
1. sublime text3支持VueJS语法高亮显示插件vue-syntax-highlightgithub地址: https://github.com/vuejs/vue-syntax-hig ...
- [TCP/IP]OSI七层模型和TCP/IP四层模型
OSI參考模型 在過去的電腦網路上,由於資料通訊系統涉及複雜的軟硬體,可是又沒有統一的標準,導致通訊軟體不僅龐大複雜,而且不易測式.修改或分享.為此,ISO(國際標準組織)發展出一套OSI參考模型(O ...
- Web自动化测试—PO设计模式(三)
test_case目录下面放你要执行的用例 目录结构 ui_auto_test --src --test_case --__init.py --test_login_case --pages --__ ...
- html select change事件触发
做小组内使用的一个简单工具,其中要实现的一个小功能是当某个下拉菜单的选择值改变时触发另一表单元素的属性变化.自然的想到使用select表单元素的onchange事件. 下拉菜单部分的代码如下: < ...
- 《从0到1学习Flink》—— Data Source 介绍
前言 Data Sources 是什么呢?就字面意思其实就可以知道:数据来源. Flink 做为一款流式计算框架,它可用来做批处理,即处理静态的数据集.历史的数据集:也可以用来做流处理,即实时的处理些 ...
- 渣渣菜鸡的 ElasticSearch 源码解析 —— 启动流程(下)
关注我 转载请务必注明原创地址为:http://www.54tianzhisheng.cn/2018/08/12/es-code03/ 前提 上篇文章写完了 ES 流程启动的一部分,main 方法都入 ...
- CentOS7.5安装JDK1.8
1.准备JDK安装包 [1]查看环境 cat /etc/redhat-release [2]下载JDK1.8 网址: https://www.oracle.com/technetwork/java/j ...