暂无权限

加入尚新途,才有权限看这些视频哦!

点击前往
×
问答
一个男人
1楼

1、①那个地方的printCompany();和static静态构造器里的printCompany有什么关系?


2、在静态静态初始化块里为什么要加“printCompany();”?难道是为了方便下面static构造器里引用打印吗?

2.png

尚新途

1、二者是同一个,上面就是对下面方法的调用

2、上面是对下面方法的调用,用来执行下面静态方法的代码

Tಥ_ಥT
2楼

老师我好奇问一下,虽然知道main方法是入口,但是既然 static{} 静态初始化块 在加载类时已写入虚拟机内存,但是我把程序入口main()方法 注释掉后程序就运行不了,这只是因为JAVA的规定是这样?还是还具有其它含义呢?

image.png

尚新途

main方法永远是Java程序的启动方法,Static静态代码块呢,是随着类的加载首先加载的方法,只加载一次

微信用户
3楼

定义属性和方法的时候,怎么判断加不加static?以什么样的标准判断?

尚新途

当你希望所有对象都共用这一个属性的时候就用static。

还好
4楼

老师 请问静态属性或方法是不用声明对象 就可以直接调用的是吗?

image.png

故事说给狗
5楼

老师,这个标红的this是啥意思                                   

image.png

尚新途

image.png

所以执行打印程序的时候,这句话输出的就是对象的地址。

image.png

故事说给狗
6楼

主函数是可以调用非静态吗?为啥这里静态main可以调用非静态的login?

image.png

尚新途

main方法就是一个静态方法。

静态方法中不能直接调非静态的属性和方法。

图中并没有直接调用,而是把user实例化出来以后,通过u3调用。

故事说给狗
7楼

老师,这里的this到底代表啥意思                                          

image.png

尚新途

this.id就是指局部变量里面的id

image.png

等号后面的id是你成员变量的id

image.png

这里的this.id=id,意思就是讲本构造方法的id值赋给成员变量的id。

Clown
8楼

1  这个静态  动态是什么意思呀????????????????????

尚新途

就是加不加static的区别

就像视频中老师举例,静态方法静态属性就像是图纸

非静态类只有把对象实例化出来,才能调用它里面的方法和属性。

你把老师视频再看几遍,里面的代码自己动手敲一遍,就能更好的理解了。

Lccc
9楼
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

尚新途

李善超
10楼

老师,看视频里写的

public ...

void....

static...

但是自己写的时候不知道什么时候改用那个来修饰,只能对着视频敲,不知道什么意思

看了一些解释还是很懵

image.png


尚新途

public修饰的,就是公共的,就是只有在这个项目里,你就能哪里用,private是私有的,也就是说属于你自己的,在本类里可以用,别的类是用不了的。就像封装,你把属性都private修饰了,直接赋值就赋不了,必须通过它的get和set方法。

void是一个方法没有返回值的时候使用void,如果有返回值,就不能使用void。比如说一个加法的算法,你传递进来两个值,加法肯定的有结果吧,那你是不是就得return他们的和呢。public int add(int a,int b){return a+b},这个要根据你的具体方法去确定,写的多久知道这个方法需不需要返回值。

static 静态的,静态变量又叫类变量,静态方法可以直接调用静态方法,咱们写的main方法,它就是一个静态方法,所有你写的那句如果output使用了static修饰,就不需要通过对象去调用,可以直接使用。


富强民主文明和谐
11楼

image.png

老师视频中留的作业这么画对吗?

还有这个login方法应该指向哪呢?

尚新途

image.png

image.png

看一下这个图你就会明白,方法是在栈帧里执行,方法执行完后,在栈帧里就消失了。

天地游
12楼

老师,从写代码,运行代码,加载代码,加载静态属性和静态方法,这些细节是什么先后顺序,和怎么运行的

尚新途

你这个描述的太笼统,肯定是先写代码,在运行代码的时候肯定要先加载代码,而在加载代码时肯定是先加载静态的属性和方法,然后编译成字节码文件在虚拟机上运行。

十六
13楼

一:使用什么样的方法可以给他静态的属性赋值,如下面的代码,怎么我在main方法去给point和r赋值,但是计算的结构是null,就是没有赋值成功,求怎样设计一个方法可以达到效果:

image.png

尚新途

首先代码的运行顺序你要理解清楚,你在计算面积的时候,r并没有任何值,你是在计算完面积后才给r赋值,所以你的面积值为0.0,你可以把计算面积写成一个静态方法,方法里传入一个r,在main方法中调用这个静态方法,调用时给r赋值

image.png

我是谁的小可爱2
14楼

老师你好,对于静态初始化块有几个疑问:

1、public static Test t1=new Test();

    静态成员变量的内存分析是否与对象的初始化一样

2、在类加载信息时,静态初始化块会执行一次,那普通代码块是否会执行,是否按照顺序执行


尚新途

问题一:一样

问题二:普通代码块只有在创建对象的时候才会调用~

xli
15楼
基本数据类型与引用数据类型的区别与用途是什么
尚新途

基本数据类型是一个具体的数字,而引用数据类型是一个类,里面有方法和属性,比如String类型可以调用自己的方法实现大小写切换等等功能。

而不管基本数据类型还是引用数据类型的用途其实都一样,都是在java中表述数据的

自我检测(5S)