Java中的一些问题-数组类型-常量-关键字-变量-接口类型-引用数据类型-类类型-基本数据类型

教程大全 2026-01-20 23:58:52 浏览
搜索 IT技术

JAVA中的一些问题,关键字:基本数据类型 引用数据类型(类类型 接口类型 数组类型) 变量 常量

初学Java,对以上概念我的一些理解如下,请指点:1、关于变量:变量可以认为分为两种,一种是基本数据类型,一种是引用数据类型,当改变基本数据类型的变量的值时,是直接改变了内存中的存储内容,而对于引用数据类型的变量,改变的其实是引用指向,其实原来的存储的内容空间还存在(已变成垃圾),只是又新开辟了一个带有内容的内存空间,并指向新的内存空间,是这样吗?2、关于变量:基本数据类型的变量被final修饰后,表示该变量一旦赋值将不可改变,那么引用数据类型的变量可以被final修饰吗?(看下一条,应该是可以的)如果可以被final修饰,是不是也是表示一旦赋值将不可改变;3、关于变量:类的属性也称为成员变量,显然属性这个变量是引用数据类型的。成员变量一旦被static修饰,即类变量,也是一旦初始化,就不可再改变。在网上看到,final可以修饰属性,final修饰的属性不可以被子类覆写,但可以不子类继承、调用。因此,疑问①:static修饰的属性可以被子类覆写吗,可以被子类调用吗?疑问②:final修饰的属性可以用类名直接调用吗?4、实例变量:也就是类中不被static修饰的属性,实例变量也是引用数据类型的吧,是这样吗?5、类类型的变量:比如先定义了一个类:public class A {},然后又定义了一个类:public class B{ public A a2;},这里a2即时类类型的变量。另外对于classA,假如A是非抽象类,则 A a1 = new A ();这里a1是A的对象。问题①:这里a1其实也是A类型的变量,是这样吗?问题②:按以上逻辑,一般认为a1是对象,a2是变量,假如由此引申,它们之间会有什么区别?6、网上看到有个词——“对象变量”,这个对象变量是实力变量(即属性)呢,还是类类型的变量呢,如上处提到的a2 ?7、常量是不是也可以认为分为两类:基本数据类型的常量和引用数据类型的常量?8、常量是不是可以分为两种:一种是被fina修饰的常量、被static修饰的常量,被String修饰的常量,这种常量一旦被赋值(或者一旦被初始化)就不可再改变;另一种常量,就是本身就是一个值,如 数字 1 ,不用被赋值?

在这里输入您的答案...

最佳答案 本回答由达人推荐

有你而快乐2013.06.17 回答
1.前边说的基本正确,最后一句不严谨,“并指向新的内存空间”是对的,但未必是“新开辟了一个带有内容的内存空间”因为可以指向另外一个已存在的对象,后者仅在遇见new操作符(或者函数调用里使用了new)才正确。2.可以被final修饰,也可以修饰此变量所指向对象的内容,但不可变更此变量所指向的对象(即不可以指向新的地址)。3.属性也可以是基本数据类型。成员变量被static修饰,就是静态变量,意思是可以被这个类的所有对象所共享而已(如果不是private的还可以被其他类或对象访问),或者说,这个变量被绑定到类上而非对象上。因此,它完全可以被更改。①:static修饰的属性可以被子类调用(只要是protected或public),不存在“覆写”的问题,因为他们各自绑定到不同的类。但是,如果子类类名调用自身未定义的变量或方法,会在父类中找(protected或public的),当然自己重定义就调用自己定义的,用父类类名调用的静态变量调用的是绑定在父类的静态变量(即父类定义的静态变量)。②:final修饰的变量是常量,用类名直接调用由这个变量是否为static来决定,跟final无关。4.无论是否静态变量,都可以是基本或引用类型的。5.①必须是,因为你调用了new A()。另外,对于Aa1,那么a1所指向的对象不是A类型的对象也是A的子类的对象。②对象是变量的一种。变量的本质含义就是一个固定大小的储存空间。对象是变量的一种。同理,类是变量类型的一种。A a2:在不同的语境下,用词不一样。“a1”,本质是一个指向某对象的指针。但我们谈到“a1变量”时,既可以是指a1这个储存空间(出指向了什么对象),也可以指a1所指向的对象,这得根据上下文语境理解。而“a1对象”一般指后者。6.“对象变量”一般指的是类的非静态成员变量(也就是非静态属性)。7.常量等价于final所修饰的变量。变量可以是引用类型的,也可以是值类型的。8.见7,常量跟static八竿子打不着。另外,你可能提到了一个非常重要的概念区别(在JAVA通常不重要,并没有关键词严格区分):运行时常量与编译时常量。"dsfsdf":像左边这种字符串是常量,又称字面量,是一种非常典型的编译时常量。其实严格来说,编译时常量还分两种,但这已经涉及到CPU的运行机制,过于底层,就不再细讲。

其他回答

2013.08.26 回答
1. 原理是对的. 只是如果是引用类型指向改变的话. 不一定会变成垃圾, 如果有其它引用仍然指向此堆内存空间, 这个空间还是会一直存在 . 2. 对.3. static只是表示此变量是一个静态变量, 可以修改. final修饰的不是可以修改的.4. 实例变量只是表示非静态变量,即此变量必须在类被实例化之后才可以使用. 而是否引用数据类型是看变量的类型的. 比如变量是int类型 那它仍然是一个基本数据类型.5. 变量没有 类类型这么一说.. 只有基本数据类型和引用数据类型.6. 对象变量 就是实例变量7. 对 .8. 常量和变量是一个道理 . 只是常量一般是以final修饰的 ,表示其值不可变 所以叫常量.

相关问题


java中的引用数据数据类型是怎样的?

java中有两种数据类型:基本类型和引用类型。 基本类型有8个:整数类型 byte、short、int、long浮点数类型 float、double字符型 char布尔类型 boolean引用类型包括三种:类 Class接口 Interface数组 Array基本类型是通过诸如 int a = 5; long b = 6L;的形式来定义的,称为自动变量,自动变量存放的是字面值,不是类的实例,它存放在内存的堆栈中,数据大小和生存期必须是确定的,存取速度比较快,在堆栈中的字面值可以共享,也就是说我们定义一个int a = 5;然后又定义了一个int b = 5;这时a与b在内存中指向的是同一个字面常量。 引用类型一般是通过new关键字来创建,比如Integer num = new Integer(3);它存放在内存的堆中,可以在运行时动态的分配内存大小,生存期也不必事先告诉编译器,当引用类型变量不被使用时,Java内部的垃圾回收器GC会自动回收走。 引用变量中存放的不是变量的内容,而是存放变量内容的地址。 在参数传递时,基本类型都是传值,也就是传递的都是原变量的值得拷贝,改变这个值不会改变原变量,而引用类型传递的是地址,也就是参数与原变量指向的是同一个地址,所以如果改变参数的值,原变量的值也会改变。 这点要注意。 在java中,8种基本类型在java中都有对应的封装类型,也就是引用类型:整数类型 Byte、Short、Integer、Long浮点数类型 Float、Double字符型 Character布尔类型 Boolean有时候我们会看到这样的语句 Integer num = 3;Boolean b = true;这样定义也能行得通,其实这里面有一个自动装箱的问题,即java自动把3这个字面常量封装成了Integer对象,同理也有自动拆箱。 还有些需要注意的比较特殊的地方类型Integer i1 = 3;Integer i2 = 3;此时i1 == i2 返回的是trueInteger i1 = 128;Integer i2 = 128;此时i1 == i2返回的是false,这时因为Integer的数值在-128~127之间时,即在int的范围内,默认是按照基本类型int来存放的,仍旧存在堆栈中,如果超出了int的范围,就按照对象的方式来存放和比较了。 2、String类型String类型我们有时候也会直接这样定义:String s = abc;这里的abc称为字符串常量,也是存在堆栈中的,s中存放的就是指向这个堆栈地址的引用,如果再定义一个String s1 = abc;这时,s与s1存放的是同一个地址的引用,即s与s1指向的是同一个字符串常量,s == s1的值是true,但是如果有String s2 = new String(abc);这时s == s2则为false,因为使用new之后,每次生成的对象都不是同一个,即使存储的内容相同。 上面的s == s1,s == s2其实比较的都是地址,并不是里面的内容。 如果要比较内容,可以使用equals()方法。 其他的就不多说了,打起来太慢了,可以自己去看一下java编程思想。

为什么java有反射机制,反射机制的原理是什么

基本数据类型

可以动态的获取指定类中的成员,以及建立类对象。 好处:提高了程序的扩展性。 当class文件产生以后,这些class文件也是生活中的事物,那么对这些class文件也可以进行描述,该描述对应的类型就是Class.在java中,每一个字节码文件都有一一个与之对应的Class对象。 不仅包括引用数据类型,也包括基本数据类型。

基本数据类型和引用数据类型的区别是什么

本文介绍“基本数据类型和引用数据类型的区别”1、基本数据类型由于在内存中的一个地址存放的是这些变量的值 所以调用函数,函数里的形参 ,就是复制这些变量的值 以后对形参值的变化 不会影响到原来变量的值;2、引用数据类型由于在内存中是引用他的一个内存地址而不是具体的值,所以 调用函数, 函数里的形参, 就是复制这些变量的值的地址 ,当对形参的值进行修改的时候 就等于是对 这些变量的值 进行修改, 所以会影响到原来变量的值。 以上就是这两种类型的主要区别。

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐