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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© --_.Is’攸稀 中级黑马   /  2013-10-30 16:07  /  1212 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 --_.Is’攸稀 于 2013-10-30 17:02 编辑

知道static是静态的意思,想知道在什么情况下定义方法是有static修饰的,除了主方法。

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

11 个回复

倒序浏览
static 是一个静态修饰符 用于修饰成员变量和成员方法的。当属性和方法被修饰后 不但能被对象调用 也可以直接用类名调用。
class Demo{
  private int name;
  public static void fangfa(){
    system.out.println("hello world");
}
public static void main(String[] args){
   Demo a=new Demo();
     a.fangfa();    //用对象引用方法
Demo.fangfa();   //方法被static修饰 变成静态方法后 不用new对象 直接可以被类名引用。
}
}

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
☆╰學不会☆╮ 发表于 2013-10-30 16:23
static 是一个静态修饰符 用于修饰成员变量和成员方法的。当属性和方法被修饰后 不但能被对象调用 也可以直 ...

方法被static修饰 变成静态方法后 不用new对象 ?意思是当一个类里面有个static 方法以后,就不能new这个类对象?
回复 使用道具 举报
定义静态方法了 可以新建对象,静态方法可以不用new对象 直接用类名引用,可以用对象引用。不是说类中一旦有静态方法了 就不能建对象了。
回复 使用道具 举报
X11 中级黑马 2013-10-30 16:35:36
报纸
--_.Is’攸稀 发表于 2013-10-30 16:27
方法被static修饰 变成静态方法后 不用new对象 ?意思是当一个类里面有个static 方法以后,就不能new这个 ...

当一个类里面有个static方法后,还是可以new这个对象。static关键字是先于对象存在(在类加载之前,储存在静态代码区中)。比如System.out.print()方法,不一定需要new一个System对象。
回复 使用道具 举报
☆╰學不会☆╮ 发表于 2013-10-30 16:31
定义静态方法了 可以新建对象,静态方法可以不用new对象 直接用类名引用,可以用对象引用。不是说类中一旦 ...

哦,知道了~:)
回复 使用道具 举报
X11 发表于 2013-10-30 16:35
当一个类里面有个static方法后,还是可以new这个对象。static关键字是先于对象存在(在类加载之前,储存 ...

就是说,static以后~这个方法就一直在内存里?
回复 使用道具 举报
--_.Is’攸稀 发表于 2013-10-30 16:39
就是说,static以后~这个方法就一直在内存里?

光这样给你说 也不好理解 看看毕老师讲的视频吧 很生动 形象。
回复 使用道具 举报
看你的要求了,给你说一下使用它的好处吧。
1、static 修饰的方法,可以直接通过类名调用,无需先创建对象再通过对象调用,方便易用。
2、static 静态代码块,类被加载时,最先运行的就是它了,可以打印完成一些初始化的事情,但是要记住,静态的方法、代码块不能调用动态成员
回复 使用道具 举报
air 中级黑马 2013-10-30 16:43:26
10#
本帖最后由 air 于 2013-10-30 16:48 编辑

以下是我自己看视频然后总结:
static
修饰符,只能修饰成员变量和成员函数(方法);
修饰后,多了一种调用方式;
特点:
1,可以被对象调用.并可以直接被类名调用.用法:类名.成员(例.Person.name);
2,随着类加载就被加载,类的消失而消失,生命周期最长;
3,因为优先于对象存在;静态方法中不可以定义super,this.关键字,
4,所有对象都共享;
注意:
静态方法只能访问静态成员.
非静态方法可以访问静态和非静态成员,
好处:对对象的共享数据进行单独空间的储存,节省空间.
坏处:生命周期太长,访问的局限性(只能访问静态).
另外,主函数也是静态的.
这种定义的特点都是固定的.我建议你还是看视频的时候必须把所有固定格式,特点,用途.注意,都用笔记把他写起来,
不能用电脑去做笔记,印象不深,找起来费劲.电脑是永远不能替代纸张的.

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
air 发表于 2013-10-30 16:43
以下是我自己看视频然后总结:
static
修饰符,只能修饰成员变量和成员函数(方法);

很全面~~我应该理解了,也收藏下你的总结~
回复 使用道具 举报
本帖最后由 mayor125 于 2013-10-30 16:56 编辑

如果有些属性希望被所有对象共享,则必须将其声明为static属性,此属性可以成为静态属性或者也成为全局属性。
  1. class Person
  2. {
  3.         String name;        //声明姓名属性。
  4.         int age;        //声明年龄属性。
  5.         static String country = "中国";        //声明国籍属性。

  6.         public Person(String name,int age)        //定义构造方法,有两个参数。
  7.         {
  8.                 this.name = name;
  9.                 this.age = age;
  10.         }
  11.         public void info()        //定义功能打印输出对应的对象信息。
  12.         {
  13.                 System.out.println("name="+name+"\tage="+age+"\tcountry="+country);
  14.         }
  15. }

  16. public class StaticDemo
  17. {
  18.         public static void main(String[] args)
  19.         {
  20.                 Person p1 = new Person("zhagnsan",20);        //实例化对象,传入两个参数。
  21.                 Person p2 = new Person("lisi",30);
  22.                 Person p3 = new Person("wangwu",26);
  23.                 p1.country="火星";        //修改static属性。
  24.                 p1.info();        //打印输出对象的信息。
  25.                 p2.info();
  26.                 p3.info();
  27.         }
  28. }
复制代码
通过上面这个例子就很好理解了,如果对象p1所在的国家不是中国而是火星的话,因为country这个属性是声明为static的,p1就可以对country这个属性的内容进行更改了...

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

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