暂无权限

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

点击前往
×
问答
sand
1楼
public class Cons {

    public class User{
        int id;
        String name;
        String pwd;
        public User(int id){
            this.id=id;
        }
        public User(int id,String name){
            this.id=id;
            this.name=name;}

    }


    public static void main(String[] args){
       User u=new User(234);//为什么报错了

    }
}

有一步报错了,哪里错了

尚新途

为啥是类里面套了一个类呢

sand

哦哦哦谢谢老师,没注意到


尚新途

不客气哦,细心点哦

微信用户
2楼

User {
    ;
    String ;
    String ;

    User(){
        System..print();
    }
    User(id){
        .=id;
    }
    User(id,String name){
        .=id;
        .=name;
    }

    main(String[] args) {
        User u1=User(,);
        User u2=User();
        User u3=User();
        System..println(u1.);
        System..print(u2.);
    }
}
输出:
hhh   玩两天
2

请问老师,为什么输出里面有“hhh”,并且还是最先输出?

尚新途

微信找我给你看一下吧

Li
3楼
User {
    idString nameString pwdUser(){
    }
    User(id){
        .id = id}
    User(idString name){
        .id = id.name = name}
    User(idString nameString pwd){
        .id = id.name = name.pwd = pwd}
    main(String[] args) {
        User u = User()User u1 = User()User u2 = User()}

}

老师,这个代码为什么不能run呀?根本没有run的选项。

尚新途

image.png

代码乱码了

JAVA51-5-陈辉镖
4楼

老师  那个无参构造器有什么具体用法

尚新途

无参构造和有参构造都是在你去new对象的时候使用的,如果一个类里有了有参构造模拟想要使用无参构造,这个无参构造必须定义出来,如果你都使用有参构造,其实也是,比如说你有一个类。User,你有4个属性,你创建有参构造就是把这个4个属性值都放在了有参构造里,如果我有一个需求,这个需求是我只要一个属性值被赋值就可以,不需要4个,那么你可以再去创建一个属性值对应的有参构造,如果另一个需求是需要2个参数的属性值,你就需要再创建一个2个参数的有参构造,这样就太繁琐了,需要属性赋值少的可以通过无参构造new出来的对象调用set方法去赋值的。

尚新途

好的 明白了

尚新途

不客气哦

5楼

在自动生产构造器时,不需要提前存储一下构造器吗?为什么会自动生成与之前代码相同的构造器?是不是因为下面已经使用了构造器,所以直接生成了对应的构造器?

尚新途

什么意思呢,老师不太理解你的意思。

自在如意
6楼

原因:构造方法不也是方法的一种嘛,在写构造方法的时候,那个声明的形式参数不就相当于方法的局部变量嘛

上面类中已经声明了id的成员变量

image.png

疑问:那再写构造方法时申明一样名称的,一样类型的形式参数(相当于方法的局部变量)为什么不会报错:重复的变量名

尚新途

对,构造方法是一种特殊的方法,这个在构造方法里不会报错,这个也是一个规定,记住就好

Hhuoz11
7楼
class Point {
double x, y;
public Point(double _x, double _y) {
x = _x;
y = _y;
}
public double getDistance(Point p) {
return Math.sqrt((x - p.x) * (x - p.x) + (y - p.y) * (y - p.y));
}
public static void main(String[ ] args) {
Point p1 = new Point(3.0, 4.0);
Point origin = new Point(0.0, 0.0);
System.out.println(p1.getDistance(origin));
}
}

getDistance后面小括号的(Point p)是调用Point方法吗?不是的话为什么不可以用八个基本的数据类型?最后打印的(p1.getDistance(Origin)p1后面用.连接是规定的格式吗?求解答

尚新途

getDistance后面小括号的(Point p)是调用Point方法吗?

不是point方法,这里是需要一个Point的对象,可以使用八个基本数据类型,这个参数使用对象,是为了使用封装,面向对象刚学习咱们就的去使用和理解呢

p1后面用.连接是规定的格式吗?

对的,规定的格式,使用对象下的方法和属性,就是对象点属性或者方法


John
8楼

老师,这些方法都没有return,为什么方法名前面不需要加void

image.png

尚新途

构造方法比较特殊,必须和类名相同,没有返回值也没有void,这个是规定

uchVIV
9楼

老师为什么最后一条代码会报错呀?跟着打的呀?

image.png

image.png

image.png

尚新途

这里第三个参数需要传入String类型的,但是你传入的是int类型。

阿姝
10楼

老师您好,我有几个问题请教一下

请问:

  1. 重载构造方法的意义是否是为了后续对象调用的灵活性,需要几个参数就用几个参数?

  2. 如果使用直接默认的构造器不重载,那么类里定义的局部变量就要全部定义赋值,而不能只选择一个或两个?


尚新途

第一个说的很对,

第二个默认构造器为无参构造器,如果写了有参构造,和第一个是一样的,在调用时,就是看参数,我们在调用时写了几个参数,就会调用有几个参数的构造器。

温如言
11楼

微信图片_20211026202228.png老师我这为什么会报错呢

尚新途

框住的删掉,会自动匹配的。

image.png

陈星蓉
12楼



image.png


image.png



老师例题中讲解的代码如果我想新定义一个打印的方法,用到this.为啥报错啊?

尚新途

静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了

西秋
13楼

QQ截图20210725140910.png

老师,我想问下 这里的这个方法名用 point不可以吗

尚新途

不可以的

构造方法的方法名必须和类名相同

zjshaopku
14楼

关于方法重载的先后问题,有如下代码:


(feetinches) {

}

(inches) {
(feetremainingInches)}



我有三个问题:

  1. 如上代码,第一个两个参数的方法,是否一定要写在第二个调用该方法之前?还是说方法之间,即便存在相互调用关系,先后顺序也无所谓?

  2. 在之前的代码中,我发现有时候main方法会写在普通方法之前,有时候会写在普通方法之后,但并不影响main方法调用方法。是否在JAVA中,程序遇到方法调用时,即便调用的方法在正在执行的代码之后,程序也会向下寻找方法,而不是说,必须在调用方法的代码前,就必须声明方法?

  3. 关于main方法应该放在整个代码最前,还是放在声明的方法后边,是否有一个统一的规范?谢谢

尚新途

1.第一个两个参数的方法,是否一定要写在第二个调用该方法之前?还是说方法之间,即便存在相互调用关系,先后顺序也无所谓?

答:方法之间即使存在相互调用的关系先后调用不影响的。

2.在之前的代码中,我发现有时候main方法会写在普通方法之前,有时候会写在普通方法之后,但并不影响main方法调用方法。是否在JAVA中,程序遇到方法调用时,即便调用的方法在正在执行的代码之后,程序也会向下寻找方法,而不是说,必须在调用方法的代码前,就必须声明方法?

答;main方法没有规范,只要是在方法之外类中就可以,main方法是最后才去执行的一个操作


Try丨harder
15楼

image.png

老师,为什么输出s2的时候,变成了这样?(见运行效果图)


尚新途

你这是打印的对象的内存地址,后面会讲的

自我检测(5S)