黑马程序员技术交流社区

标题: 静态修饰符调用问题 [打印本页]

作者: Johnny_Hu    时间: 2015-3-8 23:19
标题: 静态修饰符调用问题
  1. <blockquote>package com.itheima;
复制代码


作者: Johnny_Hu    时间: 2015-3-8 23:22
  1. package com.itheima;

  2. public class Demo4
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 String[] name={"11","22","33","44"};
  7.                 Demo6 D = new Demo6(); //为什么我对象调用非静态函数可以
  8.                 D.qq(name);
  9.                 System.out.println("---------------");
  10.                 Demo6.qq(name); //而这样直接被类名调用就得是静态函数呢
  11.         }
  12.        
  13.        
  14. }
  15. class Demo6{
  16.          static void qq(String[] agrs){
  17.                 for(int i = 0; i<agrs.length; i++){
  18.                         System.out.println(agrs[i]);
  19.                 }               
  20.         }
  21. }
复制代码

作者: aawenwei    时间: 2015-3-9 00:16
静态函数是优先于对象存在的,随着类的加载再加载,
作者: 混乱的世界    时间: 2015-3-9 00:18
public static void main(String[] args)
       {
               String[] name={"11","22","33","44"};
               Demo6 D = new Demo6(); //为什么我对象调用非静态函数可以
              // D.qq(name);
               System.out.println("---------------");
               new Demo6().qq(name); //而这样直接被类名调用就得是静态函数呢 //直接用类名来调用要加双括号,qq函数是不是静态的没关系
       }

作者: 李忠兵    时间: 2015-3-9 00:50
对象可以调用静态成员和也可以调用非静态成员,而类名只能调用静态成员。因为静态成员是属于类的,优先于对象存在。
作者: Johnny_Hu    时间: 2015-3-9 11:14
李忠兵 发表于 2015-3-9 00:50
对象可以调用静态成员和也可以调用非静态成员,而类名只能调用静态成员。因为静态成员是属于类的,优先于对 ...

:)说的好   学习了
作者: Johnny_Hu    时间: 2015-3-9 13:11
混乱的世界 发表于 2015-3-9 00:18
public static void main(String[] args)
       {
               String[] name={"11","22","33","44"}; ...

你这个不是直接类名调用  
你这是匿名对象调用
也是属于对象调用
作者: 混乱的世界    时间: 2015-3-9 13:17
Johnny_Hu 发表于 2015-3-9 13:11
你这个不是直接类名调用  
你这是匿名对象调用
也是属于对象调用

恩,谢谢,我刚刚才学到静态修饰符这里,哈哈,不好意思,我开始回答你问题时还不知道这个
作者: zgjswp    时间: 2015-3-9 13:57
静态成员随着类的加载而加载,优先于对象存在,类名可以直接调用静态成员。对象则都可以调用的
作者: 白春秋    时间: 2015-3-9 16:51
说到根上,静态函数和非静态函数类加载时,所存储的区域是不同的,非静态函数和自己所属的类存储在一起,都在非静态去:而所有类的所有静态函数则存储于静态区,是游离于所属类的特殊成员,
作者: 1021361407    时间: 2015-3-9 18:44
你那不是new了一个对象么。。。
作者: Johnny_Hu    时间: 2015-3-9 21:55
1021361407 发表于 2015-3-9 18:44
你那不是new了一个对象么。。。

new对象我是对象调用
下面的Demo6.qq(name) 是直接被类名调用




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