- 浏览: 1343963 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (896)
- spring4 (14)
- hibernate3 (26)
- spring2 (35)
- struts2 (55)
- struts1 (15)
- 设计模式 (15)
- java (172)
- mybatis3 (11)
- sql (17)
- mysql (13)
- jbpm (10)
- J2EE (45)
- tools (29)
- js (83)
- 数据结构 (13)
- Html (26)
- web (22)
- flex (33)
- Oracle (57)
- linux (49)
- 算法 (6)
- 其它 (12)
- easyui (1)
- bootstrap (13)
- xml (2)
- tomcat (1)
- redis (10)
- activemq (2)
- webservice (11)
- maven (2)
- springboot (1)
- ubuntu (1)
- python (14)
- rocketmq (1)
- springcloud (10)
- opencv (1)
最新评论
-
mike_eclipse:
Hashtable是线程不安全的吗?好像是线程安全的吧?
多线程之集合类 -
July01:
推荐用StratoIO打印控件,浏览器和系统的兼容性都很好,而 ...
lodop打印控件 -
xingcxb:
经过测试,假的,依旧会出现中文乱码!!!!store方法里面采 ...
java 读写Properties文件,不会出现中文乱码 -
tiger20111989:
...
Spring注解方式管理事务 -
zw7534313:
...
js 文字上下滚动 无间断循环显示
1. What will happen when you attempt to compile and run the following code?
public class Tux extends Thread {
static String sName = "vandeleur";
public static void main(String argv[]) {
Tux t = newTux();
t.piggy(sName);
System.out.println(sName); //静态属性的调用,不改变原来的值,Tux.sName="abc"可以改变静态值。 而实例属性,值会跟着改变。
}
public void piggy(String sName){
sName = sName + " wiggy"; //不会改变静态属性值
start();
}
public void run(){
for(int i=0;i<4; i++) {
sName = sName + "" + i;
}
}
}
A) Compile time error
B) Compilation and output of "vandeleur wiggy"
C) Compilation and output of "vandeleur wiggy 0 12 3"
D) Compilation and probably output of "vandelur" but possible output of "vandeleur 0 1 2
D是正确的。注意线程的使用,是无序执行的,所以sName也会跟着变
静态方法
通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法。
静态变量
静态变量与静态方法类似。所有此类实例共享此静态变量,也就是说在类装载时,只分配一
块存储空间,所有此类的对象都可以操控此块存储空间,当然对于final则另当别论了。
class Value{static int c=0;static void inc(){c++;}}
class Count{public static void prt(String s){System.out.println(s);}
public static void main(String[] args){
Value v1,v2;v1=new Value();
v2=new Value();
prt("v1.c="+v1.c+" v2.c="+v2.c);
v1.inc();
prt("v1.c="+v1.c+" v2.c="+v2.c); }}
//结果如下:
v1.c=0 v2.c=0
v1.c=1 v2.c=1
class Value{static int c=0;Value(){c=15;}
Value(int i){c=i;}static void inc(){c++;}
}
class Count{public static void prt(String s){System.out.println(s);}
Value v=new Value(10);
static Value v1,v2;
static{prt("v1.c="+v1.c+" v2.c="+v2.c); //static 程序块
v1=new Value(27);prt("v1.c="+v1.c+" v2.c="+v2.c);
v2=new Value(15);prt("v1.c="+v1.c+" v2.c="+v2.c);}
public static void main(String[] args){
Count ct=new Count();
prt("ct.c="+ct.v.c);
prt("v1.c="+v1.c+"
v2.c="+v2.c);
v1.inc();
prt("v1.c="+v1.c+" v2.c="+v2.c);
prt("ct.c="+ct.v.c);}}
结果如下:
v1.c=0 v2.c=0
v1.c=27 v2.c=27
v1.c=15 v2.c=15
ct.c=10
v1.c=10 v2.c=10
v1.c=11 v2.c=11
ct.c=11
static定义的变量会优先于任何其它非static变量,不论其出现的顺序如何。正如在程序中
所表现的,虽然v出现在v1和v2的前面,但是结果却是v1和v2的初始化在v的前面。在
static{后面跟着一段代码,这是用来进行显式的静态变量初始化,这段代码只会初始化一
次,且在类被第一次装载时。
发表评论
-
服务端推送multipart/x-mixed-replace
2023-12-07 15:26 462往网页分批推送数据:boundary=END,总头--> ... -
使用httpclient提交post请求
2020-08-22 08:35 513import org.apache.http.HttpEnt ... -
Groovy超强的Java动态计算能力
2020-06-25 09:03 724//Groovy超强的Java动态计算能力 groovy-2. ... -
bsh(BeanShell)动态执行java代码
2020-06-25 07:59 1038import java.util.Date; /** * B ... -
延时任务处理订单超时方案
2020-05-23 16:05 1055JDK的延迟队列 方案是利用JDK自带的DelayQueue ... -
HttpsURLConnection
2020-04-29 10:51 895import java.net.URL; import jav ... -
Log4j的ConversionPattern参数的格式含义
2020-04-22 14:23 541Log4j的ConversionPattern参数的格式含义 ... -
thread 的join
2020-04-16 18:02 450java里面也有这个方法,Java Thread中, join ... -
GZIPOutputStream压缩文件
2020-04-16 17:52 824import java.io.BufferedReader; ... -
软引用SoftReference的使用
2020-04-16 15:48 615软引用SoftReference的使用 SoftRefere ... -
Fastjson
2020-04-15 14:53 442import java.util.ArrayList; imp ... -
6位随机数
2020-04-14 09:47 853import org.apache.commons.lang. ... -
Java加密和数字签名
2020-04-14 09:38 454Java加密和数字签名 消息摘要 这是一种与消息认证码结合使 ... -
DES加密、解密
2020-04-02 16:42 468import java.security.SecureRand ... -
Java利用 AES/ECB/PKCS5Padding 算法加解密
2020-04-02 11:19 1111对称加密、解密 import javax.crypto.Ci ... -
springboot中使用springmvc的拦截器-HandlerInterceptorAdapter
2018-12-13 16:04 1432springboot中使用springmvc的拦截器-Hand ... -
aspectj连接点
2018-12-13 15:55 633切点指示符 切点指示符 ... -
spring之AspectJ面向切面编程
2018-12-13 14:15 950spring之AspectJ面向切面编程 面向切面编程,实现 ... -
设计模式之策略模式
2018-05-30 21:17 590public class Person { priva ... -
使用反射将对象转Map
2018-05-27 17:33 763//使用反射将对象转Map<String, St ...
相关推荐
Java中的静态方法和静态属性是线程安全问题的常见触发点。线程安全问题通常发生在多个线程同时访问和修改共享资源时,如果没有适当的同步机制,可能会导致数据不一致或出现不可预测的结果。 首先,我们要理解`...
在Java中,线程并发可以通过多种方式实现,包括继承Thread类、实现Runnable接口以及使用ExecutorService和Future等高级API。下面将详细探讨这些知识点。 首先,Java中创建线程主要有两种方法。一种是通过继承Thread...
"Java 访问修饰符详解" Java 访问修饰符是 Java 编程语言中的一种重要机制,它控制着类、方法和变量的访问权限。访问修饰符可以分为四种:public、protected、private 和缺省(无访问修饰符)。 public 访问修饰符...
Java修饰符是编程中至关重要的概念,它们用于定义类、接口、变量和方法的访问权限、行为和特性。本文将详细介绍Java中常见的修饰符及其用途。 1. **类的修饰符** - **public**: 公共访问控制符,允许任何地方的...
在Java编程语言中,`static`关键字是一个非常重要的修饰符,它有多种用途,涉及到类、对象以及变量和方法的生命周期。本视频教程详细讲解了`static`关键字在Java中的应用及其背后的原理。 首先,我们要理解`static`...
根据提供的信息,我们可以推断出这份文档主要关注的是Java线程的...理解线程的创建、生命周期管理以及线程间的同步和通信机制对于开发高质量的Java应用至关重要。希望以上内容能够帮助您更好地掌握Java线程的相关知识。
根据 JAVA 访问修饰符的特性和使用范围,我们可以将其分为三类:修饰符类的访问修饰符、属性的访问修饰符和方法的修饰符。 一、修饰符类的访问修饰符 修饰符类的访问修飾符共有四种:默认、public、abstract 和...
Java 编程中常用修饰词使用方法 Java 语言中定义了 11 个常用的修饰词,每个修饰词都有其特定的使用场景和作用。下面对这 11 个 Java 修饰词进行详细的介绍: 1. public 修饰词 修饰对象:类、接口、成员 介绍:...
Java作为一门广泛使用的编程语言,拥有丰富的语法结构和关键字,其中修饰词(modifiers)是Java语言中的重要组成部分,用于限定类、方法、字段等的访问级别、生命周期以及特性。以下是对Java中11个修饰词的详细介绍...
在Java中,`static`关键字是面向对象编程的一个重要组成部分,它用于修饰类的成员变量和成员方法。本章节将深入探讨`static`关键字在Java中的应用及其原理。 首先,我们要理解`static`关键字的基本概念。`static`...
在Java中,某些修饰符可以组合使用,如`public static`、`protected final`等,以达到更精细的控制效果。例如,`public static`方法表示该方法是公共的且与类实例无关,而`protected final`变量则表示受保护的且不可...
### Java中的方法重载与重写以及线程概念详解 #### 一、方法重载(Overloading) 在Java中,**方法重载**是指在同一个类中定义多个具有相同名称但参数列表不同的方法。这里提到的“参数列表不同”不仅包括参数的...
在Java编程语言中,修饰符是用来限制或指定代码元素(如类、方法、变量)的访问权限、特性或行为的关键词。以下是对标题和描述中提及的Java修饰符及其相关知识点的详细介绍: 1. 类的访问控制修饰符: - **public*...
Java中的线程优先级用整数表示,范围从1(`MIN_PRIORITY`)到10(`MAX_PRIORITY`),默认优先级是5(`NORM_PRIORITY`)。但实际执行时,线程调度受操作系统调度策略影响,不一定优先级高的线程先执行。 六、线程...
本篇内容将围绕Java线程的基础知识、创建方式、生命周期以及线程同步等核心概念进行深入探讨。 #### 一、Java线程基础知识 1. **线程与进程的区别**:线程是进程中可独立调度和执行的基本单元,而进程则是资源分配...
### JAVA线程深入了解 #### 一、JAVA线程启动方式详解 ##### 1. 利用`Thread`类的子类启动线程 在Java中,可以通过继承`Thread`类来创建一个新的线程。这种方式相对直观,易于理解。具体做法是创建一个`Thread`类...
对象共用被static修饰的代码和属性。需要注意static的使用,以免出现问题。 七、代码实现 在代码实现中,使用了JFrame、JLabel、JComboBox和JButton等控件来实现界面。使用了listener来监听按钮的点击事件,并实现...
1. **使用`synchronized`关键字**:可以修饰方法或者代码块,确保同一时刻只有一个线程可以访问被标记为同步的方法或代码块。 ```java public class SynchronizedExample { private int counter = 0; public ...
在上面的例子中,我们使用static关键字修饰了value变量,以确保该变量的值在多线程环境中是一致的。 四、结论 在本文中,我们探讨了final和static关键字在Java多线程编程中的应用和特点。final关键字可以确保对象...