老师您好,我刚看到有其他学生和我有一样的疑惑,但是那个老师回答的意思像是rest();是必写在子类里才能执行。
但是我没在子类里写这个也能正常执行,请问是我哪里理解错了呢?下面是我的代码
package com.itbaizhan.oop; /** * 测试继承 */ public class TestExtends { public static void main(String[] args) { Student s1 = new Student("Lia",158,"英语"); System.out.println(s1 instanceof Student); System.out.println(s1 instanceof Person); s1.rest(); } } class Person /*extends Object*/ { String name; int height; public void rest() { System.out.println("休息!"); } } class Student extends Person { String major; //专业 public void study() { System.out.println("学习!"); System.out.println(this.name); } public Student(String name, int height, String major) { this.name = name; this.height = height; this.major = major; } }
方法区中加载的类也有内存地址吧?与new出的对象的内存地址不一样吧?
老师,您好,请问在创建P1变量的时候,为甚么说P1是占4个字节?
飞机大战.zip
老师我一行行对代码看了,还是在爆炸效果这里报错出不来
老师 这是怎么回事呀我只有C盘
java_demo.zip
BallGame项目文件
老师,图片从哪获取
下载好之后重新点击这个就会出现下载的页面,没有所谓的卸载
老师,视频里的最后五分钟,我用多态调用的是,Dog和Cat的叫声,视频里运行的结果是只有他们俩的叫声,但是我运行的结果把Animal的叫声也运行出来了,这是什么原因啊
捕获.PNG
public class testcuhe { public static void main(String[] args){ IStudent s = new IStudent("zhb",180,"java"); s.person.rest(); s.study(); } } class IPerson{ String sname; int sheight; public void rest(){ System.out.println("休息一会!"); } } class IStudent{ IPerson person = new IPerson(); String major; public void study(){ System.out.println("学习"); person.rest(); System.out.println(this.person.sname); } public IStudent(String sname,int sheight,String major){ this.person.sname= sname; this.person.sheight= sheight; this.person.rest(); this.major=major; } }
这样的一个代码,运行结果呢如下:
休息一会!
学习
zhb
我的问题是:我把s.person.rest();删去之后,第一个休息一会没有了。但是第二个休息一会还在,这个第二个休息一会是怎么来的?
老师,有那个天才思路模型的笔记吗;发我参考一下呗。
老师 我这里老是有错误提示。
为什么会这样?非法表达式???这个是按照视频打的
老师好,如如下算法代码问题:
class Solution { public int numDecodings(String s) { if(s== null || s.length() == 0 || s.charAt(0) == '0') return 0; if(s.length()==1) return 1; int len = s.length(); int[] dp = new int[s.length() +1]; dp[len] =1; if(s.charAt(len-1) != '0'){ dp[len-1]=1; } for(int i = len-2 ; i >=0; i--){ if(s.charAt(i) == '0'){ continue; }else{ int ans1 = dp[i+1]; } int ans2=0; int ten = (s.charAt(i) - '0') *10; int one = s.charAt(i+1) -'0'; if((ten+one)<=26){ ans2= dp[i+2]; } dp[i]= ans1+ ans2; } return dp[0]; } }
我的问题是15-17行,
如果把16行放在else中,会报错,显示找不到ans1,
但是如果不在else中写,13行之后的代码改成:
if(s.charAt(i) == '0'){ continue; } int ans1 = dp[i+1]; int ans2=0;
就没有问题,这里我比较疑惑,因为我觉得两种写法应该是一样的。
第一种写法,如果if不满足条件,一定执行else语句,因此,ans1一定被赋值,如果if满足条件,则该次循环全部被跳过,ans1和ans2都不被赋值。
第二种写法,如果if不满足条件,跳出if,直接执行后边的ans1等语句,则ans1一定被赋值,如果if满足条件,该次循环被跳过,ans1和ans2都不被赋值。
所以我没看出来,为什么第一种写法,ans1处会报错。谢谢
怎么我的画线画出来是这样啊,不加paint还是好的,加了之后整个窗体全变黑了,没有线
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637