java之面向对象---上
1:值类型
八大类型:整性—>byte(1字节),short(2字节),int(4字节),long(8字节);
浮点数—>float(4字节)--8位整,23位小数,1位符号;double(8字节)--11位整数,52位小数,1位符号
字符—>char(2字节)---汉语的原因吧
逻辑型—>bool(1bit)
其它数据类型:类类型。
存储方式:8大类型变量存储于栈中;是值类型
类类型变量,是引用类型,对象存放于堆中,在栈中存引用值,大小固定为4字节。
只能通过new来构造对象,不能像c++通过构造函数形式如 : 类名 对象 = 类名();因为这种是存入栈中的。
2:数组
数组定义兼容了c++的形式,同时增加了新的形式,这和c#一致的。
但是它的存储形式没有copy c++的形式,它都是将元素存放于堆中,栈中这是有它的引用值。
同时它依然具有静态赋值,和动态赋值效果。
3:类
类的很多方面和c#是一致的,和c++有些差别;
例如:
差异1:c++可以多继承,java不能
差异2:c++不能在定义时不能初始化,java可以;
差异3:c++关键字public只需要写一次,而Java需要每个成员都得写;
差异4:多态性上,c++是通过基类标有虚函数的才会有这种效果,而java确只要方法相同,就会认为有这种效果。
差异5:继承类型中多了default形式,这是因为有了包这个概念,其实实质和c#或者c++的命名空间类似,但是比其更加清晰。
差异6:Java没有指针,而c++有
差异7:java有初始化块代码,而c++没有
差异8:java组合方式是通过内嵌父类对象,而c++组合方式通过多继承。
4:关于公有默认情况
c++中类默认是私有;struct默认是公有;结构体写入栈中
java没有结构体,类默认为私有的。
C#中有结构体,默认是私有的;结构体写入栈中。此时即使用的是new关键字。