1、①那个地方的printCompany();和static静态构造器里的printCompany有什么关系?
2、在静态静态初始化块里为什么要加“printCompany();”?难道是为了方便下面static构造器里引用打印吗?
1、二者是同一个,上面就是对下面方法的调用
2、上面是对下面方法的调用,用来执行下面静态方法的代码
老师我好奇问一下,虽然知道main方法是入口,但是既然 static{} 静态初始化块 在加载类时已写入虚拟机内存,但是我把程序入口main()方法 注释掉后程序就运行不了,这只是因为JAVA的规定是这样?还是还具有其它含义呢?
main方法永远是Java程序的启动方法,Static静态代码块呢,是随着类的加载首先加载的方法,只加载一次
定义属性和方法的时候,怎么判断加不加static?以什么样的标准判断?
当你希望所有对象都共用这一个属性的时候就用static。
老师 请问静态属性或方法是不用声明对象 就可以直接调用的是吗?
老师,这个标红的this是啥意思
所以执行打印程序的时候,这句话输出的就是对象的地址。
主函数是可以调用非静态吗?为啥这里静态main可以调用非静态的login?
main方法就是一个静态方法。
静态方法中不能直接调非静态的属性和方法。
图中并没有直接调用,而是把user实例化出来以后,通过u3调用。
老师,这里的this到底代表啥意思
this.id就是指局部变量里面的id
等号后面的id是你成员变量的id
这里的this.id=id,意思就是讲本构造方法的id值赋给成员变量的id。
1 这个静态 动态是什么意思呀????????????????????
就是加不加static的区别
就像视频中老师举例,静态方法静态属性就像是图纸
非静态类只有把对象实例化出来,才能调用它里面的方法和属性。
你把老师视频再看几遍,里面的代码自己动手敲一遍,就能更好的理解了。
public class User { int id; //id String name; //账户名String pwd; //密码 public User() { } public User(int id, String name) { System.out.println("正在初始化已经创建好的对象:"+this); this.id = id; //不写this,无法区分局部变量id和成员变量id this.name = name; } public void login(){ System.out.println(this.name+",要登录!"); //不写this效果一样 } public static void main(String[ ] args) { User u3 = new User(101, "高小七"); System.out.println("打印高小七对象:" + u3); u3.login(); } }
老师,这段代码的执行顺序时先执行类然后执行User方法,再执行main方法最后执行main方法里的u3.login
对
老师,看视频里写的
public ...
void....
static...
但是自己写的时候不知道什么时候改用那个来修饰,只能对着视频敲,不知道什么意思
看了一些解释还是很懵
public修饰的,就是公共的,就是只有在这个项目里,你就能哪里用,private是私有的,也就是说属于你自己的,在本类里可以用,别的类是用不了的。就像封装,你把属性都private修饰了,直接赋值就赋不了,必须通过它的get和set方法。
void是一个方法没有返回值的时候使用void,如果有返回值,就不能使用void。比如说一个加法的算法,你传递进来两个值,加法肯定的有结果吧,那你是不是就得return他们的和呢。public int add(int a,int b){return a+b},这个要根据你的具体方法去确定,写的多久知道这个方法需不需要返回值。
static 静态的,静态变量又叫类变量,静态方法可以直接调用静态方法,咱们写的main方法,它就是一个静态方法,所有你写的那句如果output使用了static修饰,就不需要通过对象去调用,可以直接使用。
老师视频中留的作业这么画对吗?
还有这个login方法应该指向哪呢?
看一下这个图你就会明白,方法是在栈帧里执行,方法执行完后,在栈帧里就消失了。
老师,从写代码,运行代码,加载代码,加载静态属性和静态方法,这些细节是什么先后顺序,和怎么运行的
你这个描述的太笼统,肯定是先写代码,在运行代码的时候肯定要先加载代码,而在加载代码时肯定是先加载静态的属性和方法,然后编译成字节码文件在虚拟机上运行。
一:使用什么样的方法可以给他静态的属性赋值,如下面的代码,怎么我在main方法去给point和r赋值,但是计算的结构是null,就是没有赋值成功,求怎样设计一个方法可以达到效果:
首先代码的运行顺序你要理解清楚,你在计算面积的时候,r并没有任何值,你是在计算完面积后才给r赋值,所以你的面积值为0.0,你可以把计算面积写成一个静态方法,方法里传入一个r,在main方法中调用这个静态方法,调用时给r赋值
老师你好,对于静态初始化块有几个疑问:
1、public
static
Test t1=
new
Test();
静态成员变量的内存分析是否与对象的初始化一样
2、在类加载信息时,静态初始化块会执行一次,那普通代码块是否会执行,是否按照顺序执行
问题一:一样
问题二:普通代码块只有在创建对象的时候才会调用~
基本数据类型是一个具体的数字,而引用数据类型是一个类,里面有方法和属性,比如String类型可以调用自己的方法实现大小写切换等等功能。
而不管基本数据类型还是引用数据类型的用途其实都一样,都是在java中表述数据的