2.1 JAVA变量类型及与C++相异点
┏数值型━┳━整数型:byte shortint long
┏基本数据类型━━┫ ┗━浮点型:float double
┃ ┣字符型:char
数据类型╋ ┗布尔型:boolean
┃ ┏类(class)
┗引用数据 类型━━╋接口(interface)
┗数组(array)
1、变量允许使用符号“$”类中成员变量可以不用初始化,系统自动赋零,但函数或方法中的局部变量必须先定义再初始化才能使用。
2、const关键字被final取代。
在Java中,const是作为保留字以备扩充,同样的保留字以备扩充还有goto.
final也可以用于声明方法或类,被声明为final的方法或类不能被继承。
3、bool的关键字被 boolean取代。只有ture、false两个值。
boolean flag;
flag = true;
4、char被定义使用两个字节的unicode编码。全世界统一编码,两字节表示形式。
char echar = 'a';
char cnchar = '周';
char c1 = '\u0061' ; //后面的十六进制数为unicode编码。
char c1 = '\n' ; //转义字符
5、java中所有的数据全部都为有符号的而C++中有unsinged int 等定义。
类型 | 字节 |
byte | 1 |
short | 2 |
int | 4 |
long | 8 |
整数表示方式:
十进制:正常输入 16
八进数:以零开头 012
十六进制:以0X开头 0XFF
编译器见到整型的常量,默认作int数据处理,当作long型处理时数据后加 “L”。
long L1 = 88888888888L;// L表示常量为LONG数据类型6,常量浮点数自动处理为double类型,否则后面加f。
float f = 12.3f ; // OK
double d1 = 1244.3 ; //OK
float f = 123.3 ; //NG
C++中的引用与JAVA同截然不同。C++引用相同于一个变量的大名和小名,同时作同一块内存空间。
int a;
int &b = a; //定义b是a的引用
函数的参数为引用类型时表示直接对传入的参数进行操作,与指针类似。
int func( int &a, char b );//int引用,直接对传入的a进行操作
java中的引用表示除基本类型以外的所有参数类型都为引用。对象是通过引用进行操作的,更像是C++一个类实例化的过程,引用变量则为C++中指向类的指针。
例:已定义了Student这样一个类,有如下代码
Student zhouqt; //创造出一个引用,但此时还没有在堆中实例化
//其指向没有建立,所以其值为 null
zhouqt = new Student; //在堆中实例化,引用完成
//其指向建立,其值为 堆中实例后的地址
由于java里面没有显式的指针,不能 -> 来引用其成员一律采用成员运算符“.”,来进行引用运算。
zhouqt.age;
zhouqt.GetID( );
1,boolean禁止与其它任意类型数据之间相互转换。
2,混合运算时,容量小的数据类型自动转换为容量大的数据类型,然后运算。
3,byteshort char不会互相转换,因其参与运算时自动转换为int类型。
4、强制换符使用,与C++类似。
double d2 = 1.0, d1 = 6.2 ;
float f1 = (float) (d1 + d2 );
5,double最好不要转换为float,会出现截断数据失真。
总结例程:
public class TestConvert {
public static void main( String arg[]) {
int i1 = 123;
int i2 = 456;
double d1 = ( i1+i2 ) *1.2; //系统将转换为double型运算
float f1 = ( float )( ( i1+i2)*1.2 ); //需要加强制转换符
byte b1 = 67;
byte b2 = 89;
byte b3 = (byte)(b1+b2);//系统将转换为int型运算,需要强制转换符
System.out.println( b3 ); //会产失真
double d2 = 1e200;
float f2 = (float)d2; //会产生溢出报无穷大错
System.out.println(f2);
float f3 = 1.23f; //必须加f
long l1 = 123; //int //类型值给long型,小给大不会出错。
long l2 = 30000000000L;//必须加L
float f = l1+l2+f3;//系统将转换为float型计算
long l = (long)f;//强制转换会舍去小数部分(不是四舍五入)
}
}
总结:小的自动转化为大的,大小转小要强制。常量的int默认运算级别,浮点常量的double默认运算级别。byte shor char 变量自动转为int。
2.3 JAVA运算符
与C一致,增加字符串连续符“+”。
使用方法:
String S = "Helllo" +"World"; //S既为字符串"HellloWorld"
一、运算等级高,被运算两端只要有一端为字符串,则运算级升级为字符串。
int c = 12;
System.out.println( "a + b=" + c );//c值自动转化为字符串
二、当进行打印时,无论任何类型都自动转化为字符串,进行打印。
System.out.println(c );//打印12
2.3条件与循环和分歧语句
与C++相同。
关键字:ifelse switch for while do while break continue void
switch语句中由于存在case xxx:是一个常值,java中常值默认等级为int,因此,switch(a )中的变量a定义为int型值。
2.4 java中的方法
C中叫函数,java中方法与C++中类中的成员函数类似。
功能上来说可以增加代码的复用性的有固定功能的代码段集合。
方法允行递归调用,原理来说可以重复的压入栈区,最后逐级出栈。
如果该方法声明为static,则可直接使 用类名.方法名() 调用;若不为static就要实例化该类,再用 实例对象.方法名() 调用;在当前类调用当前类的方法,直接方法名()调用。与C++类中的静态成员函数极其类似。
总结:java中的方法分为
(1)静态方法 直接使用 类名.方法名 调用,要求方法要有static声明。
(2)普通方法 通过new创建对象 然后使用 对象.方法 调用
2.5 JAVA程序特点
1、同一类型的变量任可系统上所占用的字节宽度相同。
2、没有全局变量概念,为纯面向对象语言,程序的单位为class。
3、变量的作用域以{ }为单位,以所声明的位置为起点,分类如下。
声明的位置局部变量・成员变量
所属于数据类型基本数据・引用数据
4、win程序是*.exe双击后执行,java程序为使用命令把 “*.class”文件调用到虚似机中运行。运行时内存按功能给定分配区域,各司其职: