A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵崇友 中级黑马   /  2013-4-29 10:00  /  2116 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 赵崇友 于 2013-4-29 16:06 编辑
  1. import static java.lang.System.out;
  2. class SwapVar
  3. {
  4. public static void main(String[] args)
  5. {
  6.   println("Hello World!");
  7. }
  8. }
  9. <p> </p>
复制代码
本来想简化输出语句的,而且我已经静态导入了,为什么还说println找不到符号。如果改为out.println("Hello World");可以通过。求解释!!!

QQ截图20130429095747.png (2.44 KB, 下载次数: 0)

QQ截图20130429095747.png

15 个回复

倒序浏览
{:soso_e101:}
静态的是属于类级别的
格式:类.方法
回复 使用道具 举报
静态导入,在你自己的类中使用静态导入,可以让你使用其它类中定义的类方法和类变量,而且这些类方法和类变量就像在本地定义的一样。也就是说,静态导入允许您在调用其它类中定义的静态成员时,可以忽略类名
System.out.println();
忽略类名后,是out.println();
回复 使用道具 举报
殇_心。 发表于 2013-4-29 10:13
静态的是属于类级别的
格式:类.方法

静态导入:包名.类名.静态方法
这没有错呀;
回复 使用道具 举报
赵崇友 发表于 2013-4-29 10:25
静态导入:包名.类名.静态方法
这没有错呀;

我是说你在使用的时候。。。
如果不是   类.方法
谁知道你方法到底是谁的?
jvm是不能判断的。
回复 使用道具 举报
out的定义为public static final PrintStream out
println("hello");是out的一个普通方法,该方法不是静态方法。
例如:
package com.ahnu.entity;

public class SwapVar {
       
        public static final SwapVar swap= new SwapVar();
        public static void say()
        {
                System.out.println("test");
        }
       
        public void print2()
        {
                System.out.println("hello");
        }
        public static void main(String[] args)
        {
               
        }

}
测试代码

import static com.ahnu.entity.SwapVar.swap;
public class Test {

       
        public static void main(String[] args) {
                // TODO Auto-generated method stub
         // say();//错误,因为在此import中没有say方法
         swap.print2();//可以
        }

}
///////////////////////////////////////////////////////////
import static com.ahnu.entity.SwapVar.*;
public class Test {

       
        public static void main(String[] args) {
                // TODO Auto-generated method stub
         say();//可以
        print2();//不可以,普通方法
        }

}

希望对你有用。




回复 使用道具 举报
殇_心。 发表于 2013-4-29 10:29
我是说你在使用的时候。。。
如果不是   类.方法
谁知道你方法到底是谁的?

静态导入包中的静态方法不就是为了不写类名直接使用方法吗
回复 使用道具 举报
Den_din 发表于 2013-4-29 10:32
out的定义为public static final PrintStream out
println("hello");是out的一个普通方法,该方法不是静态 ...

嗯嗯,明白了!! 原来是println不是静态方法导致的啊!!明白了。。。。。。。。out是System里静态字段,是一个标准的输出流,PrintStream里的println方法不是静态的,因此不可以省略out。是不是这样理解?
回复 使用道具 举报
大哥,out不是一个类啊
public static final PrintStream out
“标准”输出流。此流已打开并准备接受输出数据。通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。
对于简单独立的 Java 应用程序,编写一行输出数据的典型方式是:

     System.out.println(data)
回复 使用道具 举报
out是System类的静态常量!out是打印流PrintStream对象!在PrintStream类中println()方法不是静态的!
回复 使用道具 举报
赵崇友 发表于 2013-4-29 10:33
静态导入包中的静态方法不就是为了不写类名直接使用方法吗

:Q println方法不是静态的。。
回复 使用道具 举报
殇_心。 发表于 2013-4-29 10:44
println方法不是静态的。。

嗯嗯,明白了。如果说println是静态的是不是就可以了呢?
回复 使用道具 举报
赵崇友 发表于 2013-4-29 10:48
嗯嗯,明白了。如果说println是静态的是不是就可以了呢?

嗯。前提是唯一的。如果不是的话 也会报错的
回复 使用道具 举报
殇_心。 发表于 2013-4-29 10:54
嗯。前提是唯一的。如果不是的话 也会报错的

嗯嗯,学习了!!!多谢指教……:lol
回复 使用道具 举报
赵崇友 发表于 2013-4-29 10:56
嗯嗯,学习了!!!多谢指教……

互相学习。互相学习:lol
回复 使用道具 举报
import static java.lang.System.out;
public class Test {
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                /*
                这是一个缓冲区读取流的代码
                */
                out.println("Hello World!");
        }

}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马