易截截图软件、单文件、免安装、纯绿色、仅160KB

Java Interface 是常量存放的最佳地点吗?

由于java interface中声明的字段在编译时会自动加上static final的修饰符,即声明为常量。因而interface通常是存放常量的最佳地点。然而在java的实际应用时却会产生一些问题。
由于java interface中声明的字段在编译时会自动加上static final的修饰符,即声明为常量。因而interface通常是存放常量的最佳地点。然而在java的实际应用时却会产生一些问题。
问题的起因有两个,第一,是我们所使用的常量并不是一成不变的,而是相对于变量不能赋值改变。例如我们在一个工程初期定义常量∏=3.14,而由于计算精度的提高我们可能会重新定义∏=3.14159,此时整个项目对此常量的引用都应该做出改变。第二,java是动态语言。与c++之类的静态语言不同,java对一些字段的引用可以在运行期动态进行,这种灵活性是java这样的动态语言的一大优势。也就使得我们在java工程中有时部分内容的改变不用重新编译整个项目,而只需编译改变的部分重新发布就可以改变整个应用。
讲了这么多,你还不知道我要说什么吗?好,我们来看一个简单的例子:
有一个interface A,一个class B,代码如下:
//file A.java
public interface A{
String name = "bright";
}
//file B.java
public class B{
public static void main(String[] args){
System.out.println("Class A's name = " + A.name);
}
}

够简单吧,好,编译A.java和B.java。
运行,输入java B,显然结果如下:
Class A's name = bright
我们现在修改A.java如下:
//file A.java
public interface A{
String name = "bright sea";
}

编译A.java后重新运行B class,输入java B,注意:结果如下
Class A's name = bright
为什么不是"Class A's name = bright sea"?让我们使用jdk提供的反编译工具javap反编译B.class看个究竟,输入:javap -c B ,结果如下:
Compiled from B.java
public class B extends java.lang.Object {
public B();
public static void main(java.lang.String[]);
}
Method B()
0 aload_0
1 invokespecial #1 <Method java.lang.Object()>
4 return
Method void main(java.lang.String[])
0 getstatic #2 <Field java.io.PrintStream out>
3 ldc #3 <String "Class A's name = bright">
5 invokevirtual #4 <Method void println(java.lang.String)>
8 return

注意到标号3的代


相关文档:

由Java toy programme 得出的经验及教训

学习Java大概一个月了,由于以前有c/c++基础,所以在J2SE部分的学习是比较快的,今天在论坛看到一个网友的求助帖,要将硬盘上两个文件合并为一个并删除原文件,于是便写了测试程序。后来在删除文件时,由于没有把堵到文件上的输出流关闭,导致怎么也无法删除。而且一直查不出原因,后来以为是delete方法只能删除空文件,一g ......

Java面试题汇总(基础方面)

1.列举出 10个JAVA语言的优势
a:免费,开源,跨平台(平台独立性),简单易用,功能完善,面向对象,健壮性,多线程,结构中立,企业应用的成熟平台, 无线应用
2.列举出JAVA中10个面向对象编程的术语
a:包,类,接口,对象,属性,方法,构造器,继承,封装,多态,抽象,范型
3.列举出JAVA中6个比较常用的包
Java. ......

高质量JAVA代码编写规范

1. Java 命名约定
  除了以下几个特例之外,命名时应始终采用完整的英文描述符。此外,一般应采用小写字母,但类名、接口名以及任何非初始单词的第一个字母要大写。
1.1 一般概念
  * 尽量使用完整的英文描述符
  * 采用适用于相关领域的术语
  * 采用大小写混合使名字可读
  * 尽量少用缩写,但如果 ......

java socket多线程代码

服务器端:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class ThreadSocketServer extends Thread {
    private Socket client;
  &n ......

java+Access( java数据库编程)

1:先对一些概念的理解:
JDBC:Java DataBase Connection
本季目标
1、JDBC的分类
2、JDBC的主要操作类和接口:
DriverManager、Connection、Statement、PreparedStatement、ResultSet
3、如何使用JDBC连接MySQL数据库
www.mldn.cn上有MYSQL的教程。
1、什么是JDBC?
JDBC是JAVA提供的一个服务,专门用于访问 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号