Java问题汇总

来源:互联网 发布:父母没有文化 知乎 编辑:程序博客网 时间:2024/05/21 10:21

2012/2/23

今天在命令行编译程序的时候遇到这样的一个问题:

使用了未经检查或不安全的操作,要了解详细信息,请使用 -Xlint:unchecked 重新编译。

网上查找资料后发现是以下的原因:

在编译java源文件时,你使用的是jdk1.5或以上时,可能出现这个问题。(使用了未经检查或不安全的操作;请使用 -Xlint:unchecked 重新编译。) 
原因是jdk1.5里的集合类的创建和jdk1.4里有些区别,主要是jdk1.5里增加了泛型,也就是说可以对集合里的数据进行检查。在jdk1.5以前,如果没有指定参数类型,则JDK1.5编译器由于无法检查给出的参数是否合乎要求,而报告unchecked警告,这并不影响运行。按照提示,编译时指定参数即可取消这样的警告,或者为其制定类型参数。比如: 
List temp = new ArrayList (); 
  temp.add("1"); 
  temp.add("2"); 
修改为 
List <String> temp = new ArrayList <String> (); 
  temp.add("1"); 
  temp.add("2"); 

还有一个问题是关于package的,编译以及运行的时候没有指定package的路径,导致一直提示说没有找到相应的类,这个问题当时也是让我纠结了很久啊,水啊!!!

比如代码中添加了package mypackage,那么编译的时候应该是在对应的目录下执行javac mypackage.MyClass.java。

package好比java用来组织文件的一种虚拟文件系统。package把源代码.java文件,.class文件和其他文件有条理的进行一个组织,以供java来使用。package是将文件组织在一颗类似unix,linux文件系统的树结构里面,它有一个根"/",然后从根开始有目录和文件,目录中也还有文件和目录。

2012/2/26

今天安装JPF,分别在linux和windows下做了尝试,过程比较曲折,还是记一下避免今后再犯类似的低级错误。
Linux下,安装了svn之后直接下载代码,由于JDK之前已经安装好,环境变量也配置好了,所以只要进入相应目录下执行bin/ant test就可以了,但是junit执行的时候会出现DateFormatTest.java和SimpleDateFormatTest.java执行failed,这时候需要进入这两个文件把相关的assert函数都屏蔽掉,重新执行bin/ant test就可以完成编译了。
比较折腾的是Windows下的安装,一开始出现unable to locate tools.jar,看了一下安装的说明文档发现是还没修改JAVA_HOME,于是在JAVA_HOME后面添加了D:\jdk1.6.0_20\lib\tools.jar,当然问题就从这里开始了,接下来在执行build.xml文件到了第52行的时候一直提示no javac was found,在这里纠结了很久,Linux下各个路径之间的分隔符是冒号(:),而在windows下则是分号(;),因为我在最后一个路径的后面没有再添加一个分号,按照以往的情况应该是没有问题的。但是这次运行一个批处理文件的时候需要用到JAVA_HOME继续获取其他的路径,所以在执行批处理文件的时候一直出错。仔细看了那份批处理文件后才意识到应该要在JAVA_HOME的最后一个路径后面也添加一个分号作为分隔符,这才顺利完成了JPF的编译运行。
通常,我们需要设置三个环境变量:JAVA_HOME、PATH 和 CLASSPATH。
JAVA_HOME:该环境变量的值就是 Java 所在的目录,一些 Java 版的软件和一些 Java 的工具需要用到该变量,设置 PATH 和 CLASSPATH 的时候,也可以使用该变量以方便设置。
PATH:指定一个路径列表,用于搜索可执行文件的。执行一个可执行文件时,如果该文件不能在当前路径下找到,则依次寻找 PATH 中的每一个路径,直至找到。或者找完 PATH 中的路径也不能找到,则报错。Java 的编译命令 (javac),执行命令 (java) 和一些工具命令 (javadoc, jdb 等) 都在其安装路径下的 bin 目录中。因此我们应该将该路径添加到 PATH 变量中。
CLASSPATH:也指定一个路径列表,是用于搜索 Java 编译或者运行时需要用到的类。在 CLASSPATH 列表中除了可以包含路径外,还可以包含 .jar 文件。Java 查找类时会把这个 .jar 文件当作一个目录来进行查找。通常,我们需要把 JDK 安装路径下的 jre/lib/rt.jar (Linux: jre/lib/rt.jar) 包含在 CLASSPATH 中。

2012/2/28

static数据和static方法。

通常情况下,类成员必须通过它的类的对象访问,但是可以创建这样一个成员,它能够被它自己使用,而不必引用特定的实例对象。在成员的声明前面加上关键字static(静态的)就能创建这样的成员。如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象。可以将方法和变量都声明为static,static成员的最常见的例子是main( ) 。因为在程序开始执行时必须调用main() ,所以它被声明为static。 
声明为static的变量实质上就是全局变量。当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共用一个static变量。

声明为static的方法有以下几条限制:
它们仅能调用其他的static 方法; 
它们只能访问static数据; 
它们不能以任何方式引用this 或super。

以下是代码示例:

class HelloWorld { int a1 = 6; public static void main(String[] args) { System.out.print(a1);    /*  成员变量不能直接调用(无法从静态上下文中引用非静态变量a1)*/ } } /*编译时报如下错: HelloWorld.java:7: 无法从静态上下文中引用非静态变量 a1 System.out.print(a1); */ /*1 错误 因为非静态的变量a1没有初始化,改为如下程序*/ class HelloWorld { int a1 = 6; public static void main(String[] args) { HelloWorld abc=new HelloWorld(); System.out.print(abc.a1); } } //编译通过。


socket 与 多线程

import java.net.*;   import java.io.*;   public class MultiUser extends Thread{   private Socket client;   public MultiUser(Socket c){   this.client=c;   }   public void run(){   try{   BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));   PrintWriter out=new PrintWriter(client.getOutputStream());   //Mutil User but can't parallel  while(true){   String str=in.readLine();   System.out.println(str);   out.println("has receive....");   out.flush();   if(str.equals("end"))   break;   }   client.close();   }catch(IOException ex){/*...*/}finally{/*...*/}   }   public static void main(String[] args)throws IOException{   ServerSocket server=new ServerSocket(5678);   while(true){   //transfer location change Single User or Multi User  MultiUser mu=new MultiUser(server.accept());   mu.start();   }   }   }





原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 安利净水器坏了怎么办 安利净水器滤芯盖搭配坏怎么办 安利会员卡过期了怎么办 婴儿吃了润唇膏怎么办? 用错沐浴露洗头怎么办 雅蜜润肤沐浴露怎么办 自煮小火锅水放少了怎么办 安利皇后锅发黑怎么办 宝宝灌肠后不拉屎怎么办 吃蛋白质粉肚子长胖了怎么办 安利产品过期了怎么办 拼多多拼不到人怎么办 被海南大宗骗了怎么办 手机被游戏扣钱怎么办 做酵素剩下的水果怎么办 喝了酵素胃疼怎么办 海科融通不到账怎么办 美团外卖没生意怎么办 淘宝联盟领券销售怎么办 微信返利被骗了怎么办 众筹失败后资金怎么办 健身房不给退卡怎么办 婆婆陷入民间传销组织怎么办 被三生公司骗了怎么办? ppt保存成了图片怎么办 苹果6速度变慢了怎么办 苹果6s速度很慢怎么办 微信支付上限了怎么办 佳享健康骗老人怎么办 宝宝吃了硅胶乳贴怎么办 用完卫生巾后阴部有些不舒服怎么办 指甲上有荧光剂怎么办 小孩吃了荧光剂怎么办 毛巾上有荧光剂怎么办 用过劣质面膜后怎么办 液体硅胶奶嘴煮完有味怎么办 后跟贴粘在鞋上怎么办 优化营商环境公安怎么办 提升营商环境公安怎么办 准予迁入证明过期了怎么办 粉底液容易脱妆怎么办