注意: 本系列博客是在作者已经有一年多的C++经验的基础上学习Java的个人总结,可能并不适合所有看到这篇博客的人。
一、数据类型
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;
二、表达式
1.算术表达式 略 与c++一致;
2.关系表达式 写法与c++一致,需要注意的还是boolean问题 其运算结果不是0也不是1;
3.条件表达式 cond? expr1:expr2; 写法同c++,需要注意的还是boolean问题 cond必须是boolean;
4.逻辑表达式 同c++;
三、语句
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("空");
}
欢迎访问个人技术网站:http://www.breeziness.cn/
转载请注明出处 小风codec --- www.breeziness.cn
网友评论