一、表达式
1.算术表达式 略 与c++一致;
2.关系表达式 写法与c++一致,需要注意的还是boolean问题 其运算结果不是0也不是1;
3.条件表达式 cond? expr1:expr2; 写法同c++,需要注意的还是boolean问题 cond必须是boolean;
4.逻辑表达式 同c++;
二、数据类型
1.整数:byte,short,int,long 分别对应1,2,4,8字节长度
数据的范围和写法 与 C++一致
byte a=1;
int b=2;
注意:java中是没有unsigned类型 这个需要和C++区别 也就是说Java中的数都是有符号的
2.浮点数:double ,float
这个与c++基本一致 ,区别在于 float 常量的语法更加严格一些 。
在java中 float a=1.235f; 如果没有后边的f就会报错
在C++中 float b=1.235; 如果没有后边的f 编译器会发出警告 ,说 double 截断成 float ,并没有报错。因为在c++中 浮点常量默认为double ,如果希望是float,则需要加f。
3.布尔类型:boolean 有两个字面常量true ,false
注意:java中boolean类型与int类型是不可以通用的!boolean就是它,不是c++中所谓的0与非0;
三、语句
java语句和c++语句基本一致 ,需要注意的还是 boolean问题
1.if
boolean a=true;
if(a)
{
// .......
}
2.for
for(int a=0;a<10;a++)
{
// .. do something
}
3.while
while(true)
{
//......
}
4.switch
int cc=1;
switch (cc)
{
case 1:
a++;
break;
case 2:
a++;
break;
}
PS:C++中如果switch分支超过4个的话,编译器会对其进行优化,使其效率高于4个连续if语句,才能发挥出switch的正真优势(vs编译器,其他编译器可能不同)。具体优化细节,感兴趣的请百度。那么Java中它的效率如何,作者并不太知道,因为在初学,就为读者和自己留的问题吧。
四、类的基本特性
1.类的语法
在Java中类是很简单的 ,与c++也略有区别
区别【1】成员变量 每个变量前 加访问控制 。
【2】成员函数 每个函数前 同样加访问控制
【3】可以直接给成员变量赋值初始化
package my;
public class Example
{
public int id=0;
public int s=1;
//成员函数
public int getid()
{
return this.id;
}
public int setid(int id)
{
this.id=id;
return 0;
}
public int print()
{
System.out.println(this.id);
return 0;
}
}
注意:类名要同文件名,且每个文件中仅有一个类!
2.类的构造函数
【1】与类同名
【2】无返回值
【3】可以重载
package my;
public class Example
{
public int id=0;
public int s=1;
//成员函数
public Example()
{
id=10;
}
public Example( int a)
{
id=a;
}
public int getid()
{
return this.id;
}
public int setid(int id)
{
this.id=id;
return 0;
}
public int print()
{
System.out.println(this.id);
return 0;
}
}
注意 :java中是没有析构函数的 ,java中存在垃圾回收机制。如需做清理工作,直接自己实现一个成员函数并且在需要的时候调用
五、垃圾回收机制
当一个对象不在被引用时,该对象将被gc回收
public void t()
{
Example ex=new Example()
ex.print()
}
当t()退出后 创建的对象就失去作用
关于垃圾回收的比较详细的理解 参考这篇文章
关于回收机制,随着我对Java的理解深入 也会单独做一篇理解
五、数组对象
Java中数组是对象! what? 没错 在c++中 数组是复合类型,不过在STL中也提供了类似的模板类 vector 不过这个类付出的代价的效率稍低,c++11中array提供了同数组一样的效率且更加安全 。
在Java中 所有的对象都必须new来创建
int [] a=new int [10];
int [] b={1,2,3,4};
注意:数组用c++数组同样支持下标访问读写,标号0~n-1
当然,还有一系列的成员。。。
注意:数组对象的创建,仅仅是创建了N个对象的null指针
Example[] v=new Example[10];
if(v[0]==null)
{
System.out.println("空");
}
六、垃圾回收机制
当一个对象不在被引用时,该对象将被gc回收
public void t()
{
Example ex=new Example()
ex.print()
}
当t()退出后 创建的对象就失去作用
关于垃圾回收的比较详细的理解 参考这篇文章
关于回收机制,随着我对Java的理解深入 也会单独做一篇理解
¥299.00
¥399.00
¥29.00
¥498.00