java,php及ruby学习注意(1)
1.JVM(虚拟机)的运行过程
代码的装入
代码的校验
代码的执行(解释执行)2.反编译工具
JAD
FrontEnd3.java中的常量
字符常量a’,‘8’,'\u0027'
字符串常量“HelloWorld“,”123”,"Welcome\nXXX"
null常量 null常量只有一个值,用null表示,表示对象的引用为空4.变量字节大小及有效取值范围byte占用一个字节
short占用两个字节
int占用四个字节
long占用八个字节
float占用四个字节
double占用八个字节
char占两个字节
Boolean占一个字节,其取值只有两个,true和false。
5.类型转化
自动类型转换(也叫隐式类型转换)
强制类型转换(也叫显式类型转换)
类型转换的原理及什么时候要用强制类型转换
表达式的数据类型自动提升
所有的byte型、short型和char的值将被提升到int型。6.java中的运算符
运算符共分以下几种:
算术运算符
赋值运算符
比较运算符
逻辑运算符
移位运算符7.程序的流程控制
顺序结构
选择结构
循环结构8.switch语句的选择结构
Switch(表达式)
{
case常量表达式1:语句1;
case常量表达式2:语句2;
…
case常量表达式n:语句n;
default:语句n;
}
default语句是可选的,它接受除上面接受值的其他值,通俗的讲,就是谁也不要的都归它。
case后面可以跟多个语句,这些语句可以不用大括号括起来。
switch语句判断条件可接受int,byte,char,short型,不可以接受其他类型
一旦碰到第一次case匹配,就会开始顺序执行以后所有的程序代码,而不管后面的case条件是否匹配,后面case条件下的代码都会被执行,直到碰到break语句为止。我们可以利用这个特点来用同一段语句处理多个case条件9.与数组操作相关的函数
使用System.arraycopy()函数拷贝数组
用Arrays.sort 来排序数组10.对象的产生当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。除了基本数据类型之外的都是变量类型都是引用类型。
11.匿名对象
我们也可以不定义对象的句柄,而直接调用这个对象的方法。这样的对象叫做匿名对象,如:newPerson().sho();
如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象。
我们经常将匿名对象作为实参传递给一个函数调用12.this引用句柄的存放位置每个成员方法内部,都有一个this引用变量,指向调用这个方法的对象.
13.函数的参数传递
—基本数据类型的参数传递
—引用数据类型的参数传递14static静态变量 当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用。我们有时候希望无论是否产生了对象或无论产生了多少对象的情况下,某些特定的数据在内存空间里只有一份,例如所有的中国人都有个国家名称,每一个中国人都共享这个国家名称,不必在每一个中国人的实例对象中都单独分配一个用于代表国家名称的变量。
15static静态方法
在静态方法里只能直接调用同类中其它的静态成员(包括变量和方法),而不能直接访问类中的非静态成员。这是因为,对于非静态的方法和变量,需要先创建类的实例对象后才可使用,而静态方法在使用前不用创建任何对象。
静态方法不能以任何方式引用this和super关键字(super关键字在下一章讲解)。与上面的道理一样,因为静态方法在使用前不用创建任何实例对象,当静态方法被调用时,this所引用的对象根本就没有产生。
main() 方法是静态的,因此JVM在执行main方法时不创建main方法所在的类的实例对象,因而在main()方法中,我们不能直接访问该类中的非静态成员,必须创建该类的一个实例对象后,才能通过这个对象去访问类中的非静态成员,这种情况,我们在以后的例子中会多次碰到。16静态代码块
一个类中可以使用不包含在任何方法体中的静态代码块(staticblock),当类被载入时,静态代码块被执行,且只被执行一次,静态块经常用来进行类属性的初始化。
类中的静态代码块被自动执行,尽管我们产生了类的多个实例对象,但其中的静态代码块只被执行了一次。当一个程序中用到了其他的类,类是在第一次被使用的时候才被装载,而不是在程序启动时就装载程序中所有可能要用到的类。17理解main方法的语法 由于java虚拟机需要调用类的main()方法,所以该方法的访问权限必须是public,又因为java虚拟机在执行main()方法时不必创建对象,所以该方法必须是static的,该方法接收一个String类型的数组参数,该数组中保存执行java命令时传递给所运行的类的参数。
18如果函数的局部变量(函数的形参也是局部变量),内部类的成员变量,外部类的成员变量重名,我们应该按下面的程序代码所使用的方式来明确指定我们真正要访问的变量。
publicclassOuter
{
privateintsize;
publicclassInner
{
privateintsize;
publicvoiddoStuff(intsize)
{
size++;//引用的是doStuff函数的形参
this.size++;//引用的是Inner类中的成员变量
Outer.this.size++;//引用的Outer类中的成员变量
}
}
}