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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ┣┫流枫 中级黑马   /  2014-8-9 22:03  /  2257 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ┣┫流枫 于 2014-8-10 21:43 编辑

看程序:
  1.     public class MyClass{
  2.     static int i;
  3.     public static void main(String[] args){
  4.     System.out.println(i);
  5.     }
  6.     }
复制代码
不明白打印的为什么是0
不是不初始化成员变量
不就不能使用啊
求大神解释:


评分

参与人数 1技术分 +1 收起 理由
格子、 + 1 认真看视频!!!都有讲

查看全部评分

11 个回复

正序浏览
┣┫流枫 发表于 2014-8-9 22:13
变量不是不初始化不能使用吗
能说的详细点吗

那是局部变量
回复 使用道具 举报
成员变量如果没有被显示初始化,系统会赋给它默认值,基本类型会默认为0或者false,引用类型为null。
回复 使用道具 举报
变量分为两种;成员变量和局部变量。
成员变量;可以初始化,也可以不初始化,不初始化时,会默认值为零。
局部变量;必须初始化,没有默认值
回复 使用道具 举报
┣┫流枫 发表于 2014-8-9 22:30
嗯嗯 明白了   就知道是Static的事   但是不知道为啥
你这么一说就知道了
感谢  大神 ...

不用谢,不明白的就可以问我,只要我会就行,一起交流
回复 使用道具 举报
Bule丶 发表于 2014-8-9 22:29
我和你说喔,静态变量或者方法,是在类在内存中加载了就马上执行的就是static修饰的方法或者属性,然后才 ...

嗯嗯 明白了   就知道是Static的事   但是不知道为啥
你这么一说就知道了
感谢  大神
回复 使用道具 举报
┣┫流枫 发表于 2014-8-9 22:21
直接定义了一个int i;  打印i  就报错唉  
加了个static  就没事了    为啥

我和你说喔,静态变量或者方法,是在类在内存中加载了就马上执行的就是static修饰的方法或者属性,然后才是普通的变量和方法,也就是说一个类在内存中被创造出来先后出场的顺序,类-静态的-普通的,你的i是普通的,当静态的main方法出来的时候找不到你的i,所以会报错,但是你加了static给i修饰,i和main都是同时出来的,所以就没错了,不知道这么说楼主能否理解一些
回复 使用道具 举报
Bule丶 发表于 2014-8-9 22:17
成员变量是有区别的,区别就是引用类型还是基本数据类型,如果是基本数据类型那么这个变量是不会为null的, ...

  直接定义了一个int i;  打印i  就报错唉  
加了个static  就没事了    为啥
回复 使用道具 举报
成员变量是有区别的,区别就是引用类型还是基本数据类型,如果是基本数据类型那么这个变量是不会为null的,比如int,short,double等等,这些都是有默认值的,如果是引用数据类型,那么如果不赋值直接用,肯回会报null的异常的,不知道这么说楼主懂了吗?主要区别就是引用数据类型和基本数据类型的区别
回复 使用道具 举报
成员变量系统默认初始化     对于数字变量  默认 0
字符串  默认 null
布尔型  默认 false

回复 使用道具 举报

变量不是不初始化不能使用吗
能说的详细点吗
回复 使用道具 举报
默认初始化
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马