周末重新学习了一下java,有了些新的体会
1、关于jdk, jre,and JVM:
Jdk: java development kit,面向开发人员的java开发工具包
Jre:java runtime environment,面向java应用程序使用者,运行环境
JVM:java virtual machine,相当于是翻译,帮助实现跨平台,用java所写的文件先被eclipse 等编译成JVM所识别的 .class 文件,然后JVM再将该文件转换为适用于各种平台的机器码。其实javajdk1.8.0_11jrein中文件集合相当于是JVM
2、关于面向对象的三个重要属性
Encapsulation(封装):无法直接访问类的成员变量,而是通过一些get set方法,间接访问数据域;
Polymorphism(多态):静态绑定,动态绑定,通常通过继承来实现多态,通常通过重定义(override)父类的方法来实现,从个人理解来说,是因为子类同时可以看做是‘父类’,或子类包含父类,因此父类的引用可以指向子类的实体,并且可调用子类中重定义的函数。
Inheritance(继承):java不允许多重继承,但可以通过定义接口(interface)来实现多重继承。
3、关于CLR:
CLR常用简写词语,CLR是公共语言运行库(Common Language Runtime)和JVM一样也是一个运行时环境,它负责资源管理(内存分配和垃圾收集),并保证应用和底层操作系统之间必要的分离。
4、step into and step over:
step into就是单步执行,遇到子函数就进入并且继续单步执行;
step over是在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完再停止,也就是把子函数整个作为一步。
5、关于此次课堂中,了解到的同java或c++,不太一样,或者是自己不太熟悉的总结:
1)bool类型:同java但与c++不同,c++中保存的是整形值,而c#与java中都只有true 与false;
2)Object类:为所有类的基类,可以被赋予任何值;
3)装箱拆箱转换:
example:
装箱:int i = 123;
Object obj = i; // 在堆中动态生成一个新的引用实例
拆箱:int j = (int)obj;
4)is 运算符
例:
int i = 2;
String s = “China”;
if(i is object){
......
}
if(s is string){
.......
}
5)dynamic 关键字 (var)
dynamic number = 10;
Console.Writeline(number);
6)控制台应用程序格式化输出
Console.WriteLine({N [,M][:格式化字符串]} { ... } .... ,var1,var2, ... );
N : >= 0 ,表示输出变量的序号
M:表示输出变量的变量所占宽度和对齐方向。正数右对齐,负数则是左对齐。
格式化字符串:
D 或 d 十进制格式
E 或 e 指数格式
F 或 f Fixed point 固定精度格式
P 或 p Percentage 百分号格式
7)跳转中的goto语句
for(int i 。。。)
{
for( int j 。。。)
{
if(j == 3)
goto stop;
}
}
stop Console.WriteLine(“Stop!”);
8)二维数组定义有区别
int [ , ] list;
int [ , ] list = new int [3][2]{ {2,3},{4,5},{6,7}};
练习的归并排序