3-2课程的疑问

3-2课程的疑问

1、听了这么久的课,但是课程里对什么是基本数据类型,什么是引用数据类型几乎没有解释,就是告诉我们哪些是基本的,哪些是引用的。类似于告诉你是什么,但是不告诉你为什么。老师,到底为什么把String、类叫做引用数据类型?它们到底引用了什么起这样的名字?
2、引用数据类型,既可以像基本数据类型一样使用,如:
int number=5;
String str="猪头阿三";
又能与new使用,不同于基本数据类型:
String str=new String();
老师,我就懵了,这到底是什么操作?为什么引用数据类型这么神通广大?
String str="猪头阿三";指的是什么意思?
String str=new String();又是指的什么意思?
为什么String这样的引用数据类型能有两种操作方式,这两种方式的意思分别是什么,又有什么不同?
3、final Animal animal=new Animal("凡凡",1);
        animal=new Animal();
在课程里,这样写会报错,听了几遍也手打了代码,还是有些不懂anima=new Animal();这一步到底是什么意思?
4、public final static int temp=12;
老师,静态方法被final修饰,表示不能再被修改了,这我理解,但是能不能先声明,后面再给temp赋值呢?如:
public final static int temp;
接下来我就晕了,应该在哪里赋值,是在随便哪里都行,还是只能在构造方法、构造代码块、还是静态代码块,或者普通方法里赋值?
5、为什么final不能修饰构造方法?
6、组合使用final和static,能不能修饰普通的局部变量?如果不能,为什么?
那么,组合使用final和static,能不能修饰普通方法?如果不能,为什么?
单只使用static,能不能修饰普通的局部变量?如果不能,为什么?
        

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

你好!

1、关于如下的代码,首先要理解,数据类型是分为基本数据类型和引用数据类型的,而类属于引用数据类型,所以它也是数据类型。因此,下面的代码就相当于final int a=10; a=11;重新给常亮赋值会报错。下面也是重写给常亮animal进行赋值。animal赋值的内容就是一个新的Animal类的对象。给animal赋值的作用就是改变原有的引用。

http://img1.sycdn.imooc.com//climg/5ccd0b2a0001784004230090.jpg

2、final int temp不能在静态代码块中进行初始化,因为temp不是静态变量。

3、被static修饰的变量可以在普通方法中存在。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 鱼儿0001 提问者 #1
    谢谢老师的回复,通过问答的形式,我感觉对很多不清楚的知识点越来越懂了。我还有最后的一点小问题:1、被final修饰的变量叫做常量,它不可再次赋值,如:final int temp=10;老师,我的理解对吗? 2、老师说:给animal赋值的作用就是改变原有的引用。我的理解是:animal存储的是对象的地址,animal自己本身不是对象,它只是key。当新new了一个Animal()后,让animal去存储新的对象的地址,这就改变了animal原来存储的key。老师,我的理解对不对?
    2019-05-05 14:45:54
吃吃吃鱼的猫 2019-05-05 15:44:52

同学你好,同学的理解非常正确~

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

好帮手慕阿莹 2019-05-01 22:10:19

1、首先,老师有讲解基本类型哦,除了8种基本类型,其他都是引用类型,至于为什么这么起名字,老师也无从得知哦:

http://img1.sycdn.imooc.com//climg/5cc9a28500013ff605220564.jpg

2、不是引用数据类型神通广大,而是Stirng类型太常用了,java底层给他提供了这么一个便利的方法。同学现阶段就理解为创建了一个字符串对象就可以了。至于他们的不同,后续我们会讲解Stirng类型的

http://img1.sycdn.imooc.com//climg/5cc9a50e0001485d02880365.jpg

3、final是最后的,最终的,同学已经初始化了,不能修改成其他的new 的Animal对象了。new Animal();就是在new一个新的Animal对象。

4、可以,同学的代码写的是成员变量,老师在课程中有讲,在构造方法(包括无参和有参构造)中,或者是构造代码块儿(包括静态代码块儿)中。

5、构造方法有固定的格式。这个是语法要求,没有理由哦。

6、组合使用final和static,能不能修饰普通的局部变量?如果不能,为什么?

不可以,同学用static修饰的,它就是成员变量,这个是java语法规定的。

那么,组合使用final和static,能不能修饰普通方法?如果不能,为什么?

不可以,用final和static的不能被称作普通方法,而被称作静态方法。因为static这个词翻译一下就是静态的。

只使用static,能不能修饰普通的局部变量?如果不能,为什么?

不可以,同上边一样哦,static翻译过来就是静态的。所以它修饰的是静态变量。

很多是java语法规定的,就和英语有它自己的语法是一个道理的哦

如果我的回答解决了你的问题,请采纳,祝学习愉快.


  • 提问者 鱼儿0001 #1
    老师,1、关于你对问题3的回答,你没有弄明白我的意思,我的问题是: animal=new Animal();,怎么理解这里new完新的对象后animal的作用是什么?是改变存储原有的引用地址还是别的意思?2、被final修饰的普通的成员变量,如:final int temp能不能在静态代码块中初始化?3、老师,被static修饰的变量能不能在普通方法里存在?
    2019-05-03 11:04:40
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师