1.java 中静态代码块和非静态代码块。
静态代码块是在类加载时自动执行的,非静态代码块是在创建对象时自动执行的代码,不创建对象不执行该类的非静态代码块。
public class Test {
public static int a = 0;
static {
a = 10;
System.out.println("父类的非静态代码块在执行a=" + a);
}
{
a = 2;
System.out.println("父类的非静态代码块在执行a=" + a);
}
public Test () {
this("a在父类带参构造方法中的值:" + Test.a); // 调用另外一个构造方法
System.out.println(a);
System.out.println("父类无参构造方法在执行a=" + a);
}
public Test (String n) {
System.out.println(n);
System.out.println(a);
}
public static void main(String[] args) {
Test tsc = null;
System.out.println("!!!!!!!!!!!!!!!!!!!!!");
tsc = new Test ();
}
}
运行结果:
父类的非静态代码块在执行a=10
!!!!!!!!!!!!!!!!!!!!!
父类的非静态代码块在执行a=2
a在父类带参构造方法中的值:10
2
2
父类无参构造方法在执行a=2
所以:
静态代码块是在类加载时自动执行的,非静态代码块是在创建对象时自动执行的代码,不创建对象不执行该类的非静态代码块。
且执行 顺序为静态代码块------非静态代码块----构造函数。
静态代码块 与 静态方法:
一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的. 两者的区别就是:静态代码块是自动执行的; 静态方法是被调用的时候才执行的. 作用:静态代码块可用来初始化一些项目最常用的变量或对象;静态方法可用作不创建对象也可能需要执行的代码.
3. 应用
app端变更服务器地址
public class DD {
private static String HOST = "";
public static int IP_TYPE = 0; // 服务器类型 0, 1
static {
getIP();
}
public static void setType(int i) {
IP_TYPE = i;
}
public static String getIP() {
switch (IP_TYPE) {
case 0:
HOST = "http://192.168.1.100:8080/xxxx/xxx/";
break;
case 1:
HOST = "http://112.124.22.213/xxxx/xxx/";
break;
default:
break;
}
return HOST;
}
}
测试函数
public class TEST{
public static void main(String[] args) {
DD d1 = new DD();
System.out.println(d1.toString());
System.out.println(d1.getIP());
d1.setType(1);
System.out.println(d1.toString());
System.out.println(d1.getIP());
}
}
结果:
DD@4fb529d6
http://192.168.1.100:8080/Xxxx/Xxx/
DD@4fb529d6
http://112.124.22.213/xxxx/xxx/
说明,一个类的静态代码块在内存中,只有一个区域,改变代码块中的内容,不过是改变其中某项的索引指向,不会重新容间资源
类的内存空间中的地址是一样的
4. java中其他形式的代码块
一、普通代码块
直接在一个方法中出现的{}就称为普通代码块,例子程序如下:
public class CodeDemo01{
public static void main(String[] args){
//普通代码块
{
int x = 10;
System.out.println("x=" + x);
}
int x = 100;
System.out.println("x=" + x);
}
}
二、构造代码块
直接在类中定义的没有加static关键字的代码块{}称为构造代码块,例子程序如下:
public class CodeDemo02{
public CodeDemo02(){
System.out.println("========这是构造方法=========");
}
//这是构造代码块,而且在new对象时,构造代码块优先构造方法执行
{
System.out.println("=========这是构造块!=========");
}
public static void main(String[] args){
new CodeDemo02();
new CodeDemo02();
}
三:同步代码块
同步代码块主要出现在多线程中。
分享到:
相关推荐
Android Studio中快捷键实现try catch等功能包含代码块 1、windows系统下,只需选中需包含的代码块,按快捷键Ctry+Alt+T即可; 2、Ubuntu下由于快捷键已经被占用,故需要自行重新设定,设定过程如下: 点击file...
此外,还将探讨静态代码块和静态内部类的概念及其使用场景。 能学到什么: 理解Java中static关键字的含义和作用。 掌握静态成员变量和静态方法的定义和使用方法。 了解静态成员和实例成员之间的区别。 熟悉使用...
书匠语法说明之序书匠语法说明之序列表列表小书匠小书匠概述概述单级序列表效果多级嵌套序列表效果单条多序列表与其他语法的使列表项多段落列表和引列表和代码块疑问疑问相
一、问题 ①java代码没有颜色区分,统一黑色 ... 您可能感兴趣的文章:详解AndroidStudio3.0开发调试安卓NDK的C++代码Android Studio中快捷键实现try catch等功能包含代码块的实现方法Android Studi
pid控制器代码matlab Neural_Networks_for_PID_Controllers ...每个文件夹旨在运行一个独立的代码块。 请按照每个文件夹的READ_ME中的说明在MATLAB中正确设置环境。 对于我的神经网络课程中有疑问的人,请与我联系
在这个资料库中connect-examples/oauth演示OAuth功能的示例connect-examples/v1演示Connect v1功能的示例connect-examples/v2演示Connect v2功能的示例templates/ -代码块和功能定义,以简化常用用法获得帮助可以...
如此处所示:joystick:Live版本功能完全可自定义的资产多个图块(根据需要添加尽可能多的变体!)移动敌人Figma Platformer Engine在Figma中构建无需代码的平台游戏。 如此处所示:joystick:Live版本功能完全可自定义...
MATLAB用拟合出的代码绘图统计混合模型I 介绍 该存储库包含用于反伽玛正态混合模型的MATLAB代码。 用于超临界流体的混合物模型应用的其他代码(对数正态-中型混合物,概率分类)将很快上载。...此代码块绘制
众所周知,图像信息所含的数据量巨大。为了便于图像的存储,提高存储效率,研究图像压缩具有重要的意义。图像压缩的目的是减少数据存储量,便于存储和传输。黑白图像每个像素点由不同的灰度值...如有疑问,请联系博主。
matlab导入excel代码基础教程 乔丹·怀利(Jordan ...简短说明:在代码块(或.r文件)中使用#时,可以在代码中添加注释。 这使生活变得更加轻松,因为未来的自我永远都不知道过去的自我在想什么或在做什么。
EaglePHP,是一款开源、高效、面向对象的...15、优化Exception处理机制,抛出异常后在其他的代码块处进行try catch捕捉。 如有任何疑问和建议请在官网留言反馈。 http://www.eaglephp.com/pub/index.php/message
运行train_demo.m和嘈杂的视频(例如,noisy_far.avi)以获取.mat文件(mv文件或理性文件),您可以在全局参数设置中设置不同的块大小(将块大小B设置为建议的8或16),运行test_demo.m以获得降噪视频。 (例如...
如果您使用我的代码或有疑问,请告诉我。 特征 易于使用的DASM宏 组装开关可根据您的需要选择泰勒发电机 优化了代码大小,以最小化RAM和ROM空间 支持所有八种掩模图案 Atari 2600演示代码(随机生成一些与Atari ...
该设计通过毕业答辩,再原来的按键式液晶钟基础上做了创新,系统用2块单片机,1块和4*4矩阵键盘+红外发射二极管组成红外信号发射电路(红外遥控器),另1块和 红外接收头(SM0038)、时钟芯片(DS12887)、1602字符...
功能简述: 1.开启/关闭网格 2.调节级别 3.显示下一个方块 4.暂停/继续 5.隐藏/显示 本压缩包包含编译好的exe可运行文件和源代码。可以重新编译和修改。...Q Q: 383394019 (有什么疑问和建议可以加我QQ号进行联系)
如果您对使用此模板有任何疑问或需要任何帮助,请与您的客户经理联系。内容:设置您的Kelkoo Group销售跟踪代码之前确保您拥有在的“销售跟踪”页面上可以找到的商家ID和国家/地区代码。配置标签在Templates选项卡...
React Discord Clone Functional Discord Clone 使用 React、Socket IO、NodeJS、...漂亮的打印代码块包含在三个` 私人消息 消息时间戳 显示给定服务器中的当前活跃用户 转换为 Typescript 语音聊天(错误,但主要功能
语言:English (United States) 每个新选项卡上的Northgard HD图像。 对于基于策略的北欧神话...通过我们的扩展程序,您可以获得:1:高分辨率的新标签页体验2:简单,干净的视图-无图块! 3:没有广告或烦人的弹出窗口
包括来自每个选项卡背景上的抄写杂技演员的高清壁纸图像。 安装此扩展程序,即可在每个新标签页上获得游戏...没有无用的工具,图块或小部件! 3:没有广告或烦人的弹出窗口 支持语言:English (United States)
包括游戏的高清壁纸图像,每个选项卡背景上的Enter The Gungeon。 安装此扩展程序,以在每个新选项卡上获取游戏的...没有无用的工具,图块或小部件! 3:没有广告或烦人的弹出窗口 支持语言:English (United States)