初学java 的青年有几个疑问!!!!
问题有点多哈 如果你觉得有些问题和极品 可以跳过那个问题
学java 快一个星期了 有一些疑问 再不问怕忘记
1.关于类的猜测:看看我的猜测对不对
以前学的事C语言哈,变量什么的都不自带方法的。接触到java的类以后 发现类的对象可以自带方法 觉得好神奇,它是怎么实现的呢?基本数据类 的变量可以储存在内存中的某个地方 然后系统根据它的数据类型访问它。 而类的话 它有成员变量和成员方法, 难道方法(函数)就是一段代码也和变量一样储存在内存中 而且不是在代码区 而是和该类的变量挨在一起????
类生成一个实例对象以后 是不是在内存的某个地方开辟一块地方 储放对象的成员变量和方法?
但是这样的话,好像挺费内存的 如果类生成很多实例对象的话 编译器会不会这么实现:生成一个类的实例对象时 只开辟一块内存储存对象的成员变量 而所有的该类的对象都共享一段内存区域,这个区域放着该类的成员方法????
2.==操作符合equals()方法在很多情况下作用是一样的。原理也是一样的。但是某些库中类覆盖类equals()使得equals比较对象时 比较的是引用类型变量所引用的对象的值是否相等。不必比较他们是不是同一个对象。
我理解的对不?
3、java中对应C语言中 sizeof()的操作符或方法是什么?
4.Object类是java中一切类的父类????
5.main函数必须寄宿于某个类,但它又不是某个类的成员函数,它不属于任何一个类 它所在的类也无需实例化 是这样的不???
6.java中没有像C语言中的结构体???那处理一定格式的数据的时候不是很不方便?????
比如我要从文件中输入一批学生的信息 信息在文件中的组织方法是这样的
姓名 年龄 性别 学号
如果是用C语言的话可以定义一个结构体:
typedef struct{
char name[20];
int age;
char sex;
int id;
}stu;
这样就很直观的从文件读入数据了 !在java中没有结构体 该怎么处理这中数据呢???也许是我还没把java语法看完
7.用java其实也可以写出完全和C一样面向过程的代码 对不???
........
再求一些建议 :
感觉《java核心技术 卷一》好厚,那么还有卷二 是不是把这两本都看完了才算个门
------解决方案--------------------1,类的方法就相当于一个功能。
基本数据类型的变量,不管是成员变量还是局部变量还有方法一般都在栈内存中进行使用。
而当它们使用完就会自动弹栈的。
而类生成的实例对象,只要是new出来的都存放在堆内存中。
不是,类的成员方法也在栈内存中栈内存中进行使用,使用完就释放掉了。
------解决方案--------------------1 类的方法保存在和变量不同的区域内 被所以类对象共享 每个类编译器都是生成一定的元数据来描述方法变量等信息的。
2 恩
3 木有 java的基本类型的大小是固定 内存管理有gc 不需要sizeof
4 是
5 mian是静态的
6 java对象全是引用的语意的 可以用class来实现struct的效果
7
------解决方案--------------------4,是
5,嗯 它是静态的,所以类一加载就出现了静态方法区中
6,没学过C的伤不起啊
7,学习java别用面向过程的思想去考虑问题哦
------解决方案--------------------你把main所在的类实例化后,可以调用该类中的其他方法,而main方法在你运行的时候,虚拟机会调用main方法的。
------解决方案--------------------
1.类生成一个实例对象以后 是不是在内存的某个地方开辟一块地方 储放对象的成员变量和方法?
是的,成员变量有多份,在堆内存中。方法其实只有一份,你每次调用方法的时候才开始在栈内分配临时内存,调用完了就释放了。
2.是的
3、java中对应C语言中 sizeof()的操作符或方法是什么?
看你用来干什么了,容器里面可以使用size()方法
4.正确
5.main是静态方法,不同于普通方法,需要了解JVM的运行机制
6.类本身就是结构了
7.java是纯面向对象的语言
------解决方案--------------------不允许的,这个你可以试试的。
------解决方案--------------------楼上的几位说用对象想用main方法???
不对吧,main方法是静态的吧。。。。
main方法是程序的入口,当然要是静态的,不能通过对象调用,要不,可能就有多个入口了...
------解决方案--------------------2:你只需要记住 ==比较的是地址上的值(必须指向同一地址的相同值) equals比较的是值就可以了
4:是的 比如在设计模式中常用到 object
6:java是没有结构体 但是它有类和方法
说句题外话 别用C思想理解java C注重的是底层实现允许程序员自由发挥 java大部分都是jvm和api已经实现好的
------解决方案--------------------都看完了不一定就能 入门,如果不进行大量实践,看这些书跟没看是一样的效果。。。。
------解决方案--------------------回答3:java中没有和C中sizeof()一样的方法
------解决方案--------------------java 跟c两个语言不同,要注意!!!早点接受面向对象这个概念,不过随着编程量的增加,你回慢慢你理解的