java中8种基础类型:
1. byte 数据类型是8位、有符号的,以二进制补码表示的整数,默认值为0
表达范围是:-128(-2^7) ~ 127(2^7-1)
取值范围已经定义在包中:Byte.SIZE,Byte.MIN_VALUE,Byte.MAX_VALUE
2. short 数据类型是16位、有符号的以二进制补码表示的整数,默认值为0
表达范围:-32768(-2^15) ~ 32767(2^15 - 1)
取值范围已经定义在包中:Short.SIZE,Short.MIN_VALUE,Short.MAX_VALUE
3. int数据类型是32位、有符号的以二进制补码表示的整数,默认值为0
表达范围:-2,147,483,648(-2^31) ~ 2,147,483,647(2^31 - 1)
取值范围已经定义在包中:Integer.SIZE,Integer.MIN_VALUE,Integer.MAX_VALUE
4. long数据类型是64位、有符号的以二进制补码表示的整数,默认为0L
表达范围:(-2^63) ~ (2^63 -1)
取值范围已经定义在包中:Long.SIZE,Long.MIN_VALUE,Long.MAX_VALUE
5. float 数据类型是单精度、32位、符合IEEE 754标准的浮点数,默认值为0.0f
取值范围已经定义在包中:Float.SIZE,Float.MIN_VALUE,Float.MAX_VALUE
6. double数据类型是双精度、64位、符合IEEE 754标准的浮点数,默认值为0.0d
取值范围已经定义在包中:Double.SIZE,Double.MIN_VALUE,Double.MAX_VALUE
7. boolean数据类型表示一位的信息,只有两个取值:true和false,默认值为false
8. char类型是一个单一的16位Unicode字符
取值范围已经定义在包中:Character.SIZE,Character.MIN_VALUE,Character.MAX_VALUE
C++的基本类型
1. int(分为有符号整型 和 无符号整型),32位机器下占32位(以下均以32位机器为例)
2. short(分为有符号整型 和 无符号整型),16位
3. long(分为有符号整型 和 无符号整型),32位,不同于java的64位
4. float(分为有符号整型 和 无符号整型),32位
5. double(分为有符号整型 和 无符号整型),64位
6. char(分为有符号整型 和 无符号整型),8位,不同于java的unicode16位
7. bool ,1位
8. void,空类型,0位
常量指不能改变的量。
在JAVA中用final标志,声明方式和变量类似:final double PI = 3.1415927;
在C++中用const标志: const double PI = 3.1415927; (编译阶段,会做语法检查、类型安全检查)
在C中用 #define标志:#define PI 3.1415927 (预处理阶段,进行简单的文本替换)
同一个类中:
public | protected | private | 默认的 | |
JAVA | 对所有类可见 | 同一包内的类和所有子类可见 | 在同一类内可见 | 不使用任何修饰符,即default类型,在同一包内可见 |
C++ | 共有的,public成员变量、成员函数,可以通过类的成员函数、类的实例变量进行访问 | 受保护的,protected成员变量、成员函数,无法通过类的实例变量进行访问。但是可以通过类的友元函数、友元类进行访问 | 私有的,成员变量、成员函数,无法通过类的实例变量进行访问。 | 若不声明,则默认为private |
类的成员函数,可以访问该类中任意的其它成员函数及成员变量,即使它是private和protect
类的实例对象,只能够访问public成员函数和变量,不能访问protect和private
继承关系中:
public | protected | private | ||
JAVA | 父类中声明为public的方法在子类中也必须为public | 父类中声明为protected的方法在子类中要么声明为protected,要么声明为public。不能声明为private。 | 父类中声明为private的方法,不能够被继承。 | 父类中默认修饰符声明的方法,能够在子类中声明为private |
C++ | 派生类通过public继承,基类的各种权限不变。 派生类的成员函数,可以访问基类的public成员、protected成员,但是无法访问基类的private成员。 |
派生类通过protected继承,基类的public成员在派生类中的权限变成了protected 。protected和private不变。 派生类的成员函数,可以访问基类的public成员、protected成员,但是无法访问基类的private成员,派生类的友元类也不能访问。 派生类的实例变量,无法访问基类的任何成员,因为基类的public成员在派生类中变成了protected。 |
派生类通过private继承,基类的所有成员在派生类中的权限变成了private。 派生类的成员函数,可以访问基类的public成员、protected成员,但是无法访问基类的private成员,派生类的友元类也不能访问。 派生类的实例变量,无法访问基类的任何成员,因为基类的所有成员在派生类中变成了private。 |
必须指定继承类型 |
Java程序的main() 方法必须设置成公有的,否则,Java解释器将不能运行该类
2.1 static修饰符,用来创建类方法和类变量
2.2 final修饰符,用来修饰类、方法和变量,final修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的(C++中用 const)
2.3 abstract修饰符,用来创建抽象类和抽象方法(C++中用 virtual)
2.4 synchronized和volatile修饰符,主要用于线程的编程。
synchronized关键字声明的方法同一时间只能被一个线程访问(C++中用线程异步:mutex、Critical Section、event和semaphore)
volatile(C++中也有volatile,但并不适用于多线程)
JAVA中有一个instanceOf 运算符,是C++所没有的。
该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)
使用实例:
例1:
String name = 'James';
boolean result = name instanceOf String; // 由于name是Strine类型,所以返回真
例2:
class Vehicle {}
public class Car extends Vehicle
{
public static void main(String args[])
{
Vehicle a = new Car();
boolean result = a instanceof Car;
System.out.println( result);
}
}
JAVA除了跟C++一样有 while; do...while; 和for循环之外,Java5引入了一种主要用于数组的增强型for循环,语法如下:
for(声明语句 : 表达式)
{
//代码句子
}
例子:
public class Test
{
public static void main(String args[])
{
int [] numbers = {10, 20, 30, 40, 50};
for(int x : numbers )
{
System.out.print( x );
System.out.print(",");
}
System.out.print("\n");
String [] names ={"James", "Larry", "Tom", "Lacy"};
for( String name : names )
{
System.out.print( name );
System.out.print(",");
}
}
}
所有的包装类(Integer、Long、Byte、Double、Float、Short)都是抽象类Number的子类
JAVA有个Math类,包含了用于执行基本数学运算的属性和方法,如初等指数、对数、平方根和三角函数。
Math 的方法都被定义为 static 形式,通过 Math 类可以在主函数中直接调用
Java语言为内置数据类型char提供了包装类Character类
未完待续...