- 浏览: 34458 次
- 性别:
- 来自: 北京
最新评论
文章列表
引子:在写静态引入的一篇文章的时候,用到了javac,以及java命令,因为不经常使用所以出现了很多问题,现与大家分享
1. 用javac的时候如果这个类有包怎么办?
解决一:直接用javac编译,然后创建包目录,把这个class放到正确的包目录下。
解决二:上面一种方法很笨,用
javac -d . *.java
可以直接编译后放入对应的目录下
“-d”则是设置类文件的目标目录。如果某个类是一个包的组成部分,则 javac 将把该类文件放入反映包名的 子目录中,必要时创建目录。
2. 如何打包编译好的类?
示例如下 ...
题目:实现一个Runnable。在run()内部打印一个消息,然后调用yield()。重复这个操作三次,然后从run中返回。在构造器中放置一条启动消息,并且放置一条在任务终止时的关闭消息。使用线程创建大量的这种任务并驱动他们。
package test;
public class test {
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i=1;i<=10;i++){
new Thread(new runabletest()). ...
题目1:证明,即使不为子类创立构造器,编译器也会为你合成一个默认的构造器,该构造器将调用基类的构造器。
package iteye;
public class child extends father {
public static void main(String []args) {
child c=new child();
}
}
class father ...
题目:创建一个简单的类。在第二个类中,将一个引用定义为第一个类的对象,运用惰性初始化来实例化这个对象。
分析:惰性初始化其实在说一个很简单的事情。就是先定义引用,在使用引用的对象的时候再进行初始化。
so
public class apple {
public void eat(){
System.out.println("I eat a apple");
}
}
public class{
public static void main(String []args){
apple a;
a=new apple();
a.eat();
...
题目:在acces/local目录下编写一下文件(假定access/local目录在你的CLASSPATH中):
// access/local/PackagedClass.java
package access.local;
class PackagedClass {
public PackagedClass() {
System.out.println("Creating a packaged class");
}
}
然后在access/local之外的另一个目录中创建下列文件:
// access/foreign/Foreign.ja ...
题目:效仿示例Lunch.java的形式,创建一个名为ConnectionMannager的类,该类管理一个元素为Connection对象的固定数组。客户端程序员不能直接创建connection对象,而只能通过ConnectionMananger中的某个static方法来获取它们。当ConnectionManager之中不再有对象时,它会返回null引用。在main中检测这些类。
解析:ConnectionMannager对象其实相当于一个connection的池,如果完善一下这个例子,增加把connection放回池的方法的话,那这个类就可以看做是一个简单的静态池。池子中静态方法返回 ...
总体思想:
当前类 同一package 子孙类 其他package
public √ √ √ √
protected √ √ √ ×
default √ √ × ×
private √ ...
题目:(大意)如果import的类库中有两个名字一样的类,我们如果使用了这个名字的类,会发生冲突,描述情形。
解析:这个问题在不同的场景下会有不同的表现。
demo:假的ArrayList
package iteye;
public class ArrayList {
public ArrayList() {
System.out.println("i'm a fake ArrayList!");
}
}
测试类:
package iteye;
import java.util.*;
import iteye.*;
pu ...
题目:在某个包中创建一个类,在这个类所处的包的外部创建该类的实例。
被引用类:
package bupt.chj.bean;
public class apple{
public void eat(){
System.out.println("I eat a apple!");
}
}
测试类:
package bupt.chj.test;
import bupt.chj.bean.apple;
public class test{
public static void main(String [] ar ...
题目:创建一个enum,它包含纸币中最小面值的6种类型。通过values()循环并打印每一个值及其ordinal()
public class test {
public static void main(String []args) {
for(money m:money.values()){System.out.println(m+" "+m.ordinal());}
}
}
enum money{
one,two,five,ten,twenty,fifty,hundred;
}
题目:在前面的例子中,为enum ...
题目:写一个类,他接受一个可变参数的String数组,验证你可以向该方法传递一个用逗号分隔的String列表,或是一个String[]。
public class test {
public test(String ... strs){
for(String str:strs){System.out.println(str);}
}
public static void main(String[] args) {
test t=new test("1","2","3");
test p=new ...
题目:创建一个String对象数据,并为每一个元素都赋值一个String。用for循环来打印该数组。
public class test {
public static void main(String[] args) {
String []strs=new String[]{"1","2","3","4"};
for(String str:strs){
System.out.println(str);
}
}
}
题目:创建一个类,他有一个接受一个String参数的构造 ...
题目:编写一个含有字符串域的类,并采用实例初始化的方式进行初始化
解析:实例初始化和静态初始化很像,只不过没有static关键字。(每个实例都有一份,而静态初始化是所有的实例都只有一份)。实例初始化可以保证不管你调用哪一个构造器,某一些代码总会被执行。
public class test {
String str1;
{
str1="chj";
}
public static void main(String[] args) {
test t=new test();
System.out.println(t.s ...
题目:编写一个类,拥有两个静态字符串域,其中一个在定义处初始化,另一个在静态快中初始化。现在,加入一个静态方法用以打印出两个字段值。请证明它们都会在被使用之前完成初始化动作。
public class test {
static String str="bupt";
static String str1;
static {
str1="chj";
}
static void f(){
System.out.println("str="+str+" str1="+str1) ...
题目:编写名为Tank的类,此类的状态可以是“满的”或“空的”。其终结条件是:对象被清理时必须处于空状态。 请编写finalize()以检验终结条件是否成立,在main()中测试Tank可能发生的几种使用方式。
public class Tank{
public boolean state=false;
public void changeState(boolean state){
this.state=state;
}
protected void finalize() throws Throwable{
if(state){
Sys ...