黑马程序员技术交流社区

标题: 输出问题 [打印本页]

作者: 凝聚    时间: 2013-11-4 17:09
标题: 输出问题
本帖最后由 凝聚 于 2013-11-5 20:15 编辑

请问什么时候用这种方式输出语句啊:out.println();而没有System,说具体点啊谢谢了。

作者: Mr.Z.Lee    时间: 2013-11-4 17:13
本帖最后由 Mr.Z.Lee 于 2013-11-4 17:23 编辑
  1. import static java.lang.System.out;
  2. import static java.lang.Integer.*;
  3. public class TestStaticImport {   
  4.   public static void main(String[] args) {  
  5.        out.println(MAX_VALUE);   
  6.       out.println(toHexString(42));     } }
复制代码

作者: ciowok    时间: 2013-11-4 17:22
out是System类的静态属性,不要System,那请问out是什么东西,对象?
作者: 魏-玉-彪    时间: 2013-11-4 17:48
本帖最后由 魏-玉-彪 于 2013-11-4 18:09 编辑
  1. //import static java.lang.System.out;
  2. //第一种方案,此处,在程序的第一行导入 java.lang.System.out;包

  3. class SystemTest
  4. {
  5.         public static void main(String[] args)
  6.         {
  7.                 out.println("Hello World!");
  8.         }
  9. }

  10. class out                      //第二种方案 在本地重写  println();方法
  11. {      public static  void println(String s){
  12.                
  13.                  System.out.println(s);

  14. }
  15.          
  16. <font color="Navy">}</font>
复制代码
有两种情况,可以达到这个效果
一: 在程序第一行导入包, import static java.lang.System.out;
out 是java.lang包 System类中的一个静态字段, 这个字段返回一个
PrintStream 对象,PrintStream对象有一个静态的方法println();静态
意思就是拿来就用,不用别外new.
import的意思是,把别的包的东西
引到自己包,就省了每次用方法再加上包名了(java.lang).


二: 第二种方案,本类中,或本包中有重写的out.println();方法



作者: The_Wizard    时间: 2013-11-4 17:56
这不是静态导入么?你去看一看,意思就是 impor tstatic 类.静态成员; 用来导入静态成员
作者: 胡志翔    时间: 2013-11-4 18:22
静态导入:import static java.lang.System.out;  之后就可以省略System了 。

或者把这个输出语句封装成一个功能,自定义功能名称,在调用的时候直接调用你自定义的名称就有了打印功能。
作者: 凝聚    时间: 2013-11-5 08:57
import java.io.*;
import java.util.*;
public class Fifteen2 {
        public static void main(String[] args)throws IOException {
        BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
        PrintWriter out =new PrintWriter(new BufferedWriter (new FileWriter("a.txt")),true);
        String line=null;
        while((line=buf.readLine())!=null)
        {if(".".equals(line))
                break;
        out.println(line.toUpperCase());
        }
        out.close();
        buf.close();
        }
看看这段代码,就没有导入import static java.lang.System.out;什么的,就out.println()这样输出了这是怎么回事?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2