1、java中只有方法没有函数。方法和队形相关,而函数与对象无关。C语言中只有函数没有方法,C++中如果一个函数独立于类之外,那它就是函数,如果存在与一个类中,那它就是方法(即成员函数)。
2、在默认情况下,浮点数是double型的。如果需要将某个包括小数点的实数声明为单精度,则需要在该数值后加字母’F’(或小写字母’f‘)。
3、由于java程序是由类组成的,因此在一个完整的java程序里,至少需要有一个类。在java程序的文件名不能随便命名,必须和public类名称一样(大小写也必须保持一致)。因此,在一个独立的源码程序中,只能有一个public类,却可以有多个non-public类。若实在一个java程序中没有一个类是public,那么对该java程序的文件名就可以随意命名了。
4、Java中声明常量使用final,虽然java中有关键词const但目前并没有被java正式启用。必须在常量声明时对齐进行初始化。
5、声明变量的作用:1、指定在内存中分配空间大小。2、规定这个变量所能接受的运算。
6、Java中作用范围是禁止嵌套的,而在C/C++中则是允许的。
void Fun(){
int i = 1;
if( i>0 ){
int i = 2; //java不能编译通过,而在C/C++中可以
}
Java中类与方法中变量作用域可以嵌套。
public class HelloWorld{
public static void main(String args[]){
int x = 1;
System.out.println( "x=" + x);
}
private int x;
}
7、java数据类型分为基本数据类型和引用数据类型。
基本数据类型:
数值型:整数类型(byte 8位、short16位、int 32位、long 64位)
浮点类型(float 32位、double64位)
字符型(char 16位) java中字符占2个字节
布尔型(boolean 8位)
引用数据类型:
类(class) 接口(interface)数组(array)
double类型:共8字节,64位,第1位为符号位,中间11位表示指数,最后52位为尾数。
float类型:共4字节,32位,第1位为符号位,中间8位表示指数,最后23位表示位数。
8、类型转换:
a、自动类型转换
byte->short->int->long->float->double 按照范围由小到大实现自动转型操作。boolean类型与其他数据类型不兼容,不可以相互转换。
b、强制类型转换 (要转换类型)变量
9、在java中,若在变量的声明中没有赋初值,则会给该变量赋默认值。
10、java中取余操作数可以是整数也可以是负数和浮点数。而在C/C++中,取余运算的操作数只能是整数。
11、短路逻辑运算符(“&&”和”||”)和非短路逻辑运算符(“&”和”|”)
对于短路逻辑运算符“&&”只要有一个false则立即返回false。
if( 1==2&& 1/0 == 0){} //可以编译运行
对于短路逻辑运算符“||”只要有一个true则立即返回true。
if( 1== 1|| 1/0 == 0){} //可以编译运行
对于非短路逻辑运算符“&”和“|”左右两个运算数都被强制运算。
if( 1==2& 1/0==0){} //编译不通过
if( 1==1| 1/0 == 0){} //编译不通过
12、位运算符
&两个二进制位均为1,结果为1,否则为0
|两个二进制位均为0,结果为0,否则为1
^两个二进制位不同,结果为1,相同则为0
~结果与原二进制位相反:1变0,0变1
>>有符号右移:高位负数补1,正数补0,低位抛弃
<<左移:高位抛弃,低位补0.
>>>无符号右移:低位抛弃,高位补0
13、foreach循环,用来遍历数组、集合框架等。
14、break 不带标签:跳出循环。
带标签:跳出循环,到指定的代码块。用于跳出嵌套很深的循环。
continue 不带标签 带标签 与break相似,不同的是continue跳出本次循环,而break则是结束循环。
15、java在定义数组时不能在方括号中写下数组的长度。
intmonth[3] = {31,14,23}; //错误
int[3] month = {31,14,23}; //错误
java数组的使用经历两个步骤:1、声明数组。2、分配内存给该数组。
数据类型 [ ] 数组名;
数组名 = new 数据类型[个数];
java二维数组允许二维数组中每行的元素个数均不相同。
即:int [][] num =null;
num= new int[3][];
num[0]= new int[4];
num[1]= new int[3];
num[2]= new int[5];
16、面向过程编程:程序 = 算法 + 数据结构
“自上而下,步步求精”,人们更易于理解这种思想,将程序一步一步的分解,并按照一定的顺序执行。以过程为中心,以算法为驱动。
不足:面向过程的程序上一步和下一步环环相扣,如果需求发生变化那么代码的改动会很大,不利于软件的后期维护和扩展。
面向对象编程:程序 = 对象 + 消息传递
面向对象设计使程序更容易扩展,也更加符合现实世界的模型。
不足:执行效率要低于面向过程程序设计。
面向过程编程强调“该怎么做?”à函数
面向队形编程强调“该让谁来做?”à对象
对象 = 数据 + 方法
程序 = 对象 + 消息传递 = ( 数据 + 方法) + 消息传递
17、对象:静态特征à变量
动态特征à方法
18、类是抽象的概念,是从所有对象提取出来的共有特征描述,而对象则是类的实例化。
19、类的四种权限:
1、默认模式(default):这类方式申明和方法和类,只允许在同一个包类是可访问的。
2、private(私有):如果一个方法、变量和构造方法被声明为“私有”访问,那么它仅能在当前声明它的类内部访问。类和接口的访问方式不能被声明为私有的。
3、public(公有):如果一个方法、变量和构造方法被声明为“公有”访问,那么它不仅可以被跨类访问,而且允许跨包访问。如果需要访问其他包里的公有成员,则需要事先导入那个包含所需公有类、变量和方法等的那个包。
4、protected(保护):如果一个方法、变量和构造方法被声明为“保护”访问,那么它只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。类和接口的访问方式不能被声明为保护类型的。
如果用final申明了,那这个final类不能不继承。
20、类中,static修饰的成员不能访问没有static修饰的成员。
java语言通过new关键字来调用构造函数,从而返回该类的实例。如果用户名优显示定义构造方法,java编译器会提供一个默认的无参构造方法。
21、staic语句块称为静态代码块,用于初始化static成员变量。
java类属性和对象属性的初始化顺序如下:
1、类属性(静态变量)定义时的初始化。
2、static块中的初始化代码。
3、对象属性(非静态变量)定义时的初始化。
4、构造方法(函数)中的初始化代码。
被static修饰的变量称为类变量,它们被类的实例所共享。
22、创建属于某类的对象,需要通过下面两个步骤实现:
1、声明指向“由类所创建的对象”的变量
2、利用new创建新的对象,并指派给先前所创建的变量。
对象只有在实例化之后才能被使用,而实例化对象的关键字就是new。
23、匿名对象有两个特点:
1、匿名对象是没有被其他对象所引用,即没有栈内存指向。
2、由于匿名对象没有栈内存指向,所以其只能使用一次,之后就变成无法找寻的垃圾对象,故此会被垃圾回收器收回。
24、对象的比较:
1、“==”运算符用于比较两个对象的内存地址(引用值)是否相等。
2、equals()方法用来比较两个对象的内容是否一致。
25、重载:
1、方法名称相同
2、方法的参数列表不同(参数个数、参数类型、参数顺序,至少有一项不同)
3、方法的返回值类型和修饰符不做要求,可以相同,也可以不同
26、构造方法:
1、构造方法名称和其所属的类名必须保持一致。
2、构造方法没有返回值,也不可以使用void。
3、构造方法也可以重载
4、构造方法不能被static和final修饰
5、构造方法不能被继承,子类使用父类的构造方法需要使用super关键词。
在java程序中一旦用户显示声明了构造方法,那么默认的“隐式的”构造方法就不会被编译器生成。
27、代码块:
1、普通代码块
2、构造代码块:把每个构造方法中相同的代码部分抽取出来,集中一起放在构造代码块中。减少不同构造方法中重复的代码,提高代码的复用性。
3、静态代码块:主要用来初始化静态成员变量。它是最早执行的代码块。
4、同步代码块
28、枚举
a、通过enum关键字创建的枚举类型可以直接在多出控制语句中使用,如switch语句等。
b、枚举关键字是定义枚举类型时必不可少的声明,而枚举类则是规定的枚举类型母类。
c、枚举类(Enum类)是在Java.lang包下定义的一个公共类,其作用是用来构造新的枚举类型。
d、使用枚举类的注意事项:
(1)、如果enum定义的枚举类访问权限定义为public,则需要单独形成一个.java文件,即不可与包含main方法的public类同处于同一个文件。如果enum定义的枚举类访问权限为默认类型,即enum关键字前没有修饰符,则enum定义的对象可在同一个包访问,无需重复定义。
(2)、使用enum定义的枚举类,默认继承与java.lang.Enum类。使用enum定义的枚举类,默认会使用final修饰,因此该类无法派生子类。
(3)、使用enum定义的枚举类,其所有的枚举值必须在枚举类的第一行显示列出,肉则这个咩距类将永远不能产生实例。在累出这些实例时,系统会自动添加public static final修饰。
(4)、所有使用enum定义的枚举类,都会由系统隐式提供一个values()方法,该方法可方便地遍历所有的枚举值。
e、EnumMap 与 EnumSet
f、定义enum内部方法,来达到个性化需求
g、枚举可以实现一个或多个接口,每个枚举对象都必须分别实现接口中的抽象方法。
h、java可以在枚举中直接定义一个或多个抽象方法。需要注意:需要为枚举每个对象单独地实现此方法。
i、枚举类型不能用public和protected修饰符修饰构造方法。构造方法的权限只能是private或者friendly,friendly是当没有修饰符时的默认权限。所以枚举对象无法在程序中通过直接调用其构造方法来初始化。
j、定义枚举类型时,如果是简单类型,那么最后一个枚举值后可以不加分号。但是如果枚举中包含有方法,那么最后一个枚举值后面代码必须要有分号“;”隔开。
k、枚举类不可以被继承。java中规定枚举是不能被继承的,因此,枚举不能用abstract修饰,只能在每个枚举的实例实现每个抽象方法。