文档库 最新最全的文档下载
当前位置:文档库 › java api笔记

java api笔记

java api笔记
java api笔记

一:

1.JDK:Java Development Kit

java的开发工具和运行环境,包括java的开发工具和jre;可以用来编译java文件和运行class 文件。

2.JRE:java的运行环境,包括java运行所需的类库和JVM(java虚拟机);只能运行class文件。

3.什么是跨平台性?原理是什么?JVM

所谓跨平台性,是指java语言编写的程序,一次编译,可以在多个系统平台上运行。

java程序是通过java虚拟机在系统平台上运行的,只要该系统可以安装相应的java虚拟机,该系统就可以运行java程序。(注意不是能在所有的平台上运行,关键是该平台是否能安装相应的java虚拟机)

总结:java程序之所以能够实现跨平台,是因为他根本就不直接运行在任何底层的平台上,而是需要在哪里运行,就在哪里事先准备好自己的java平台,而只是仅仅是安装和配置一个软件而已。

4.环境变量:

权限分为:

系统变量:所有用户都可以使用;

用户变量:只有该用户可以使用。

5.配置环境变量:让java jdk\bin目录下的工具,可以在任意目录下运行,原因是将该工具所在目录告诉了系统,当使用该工具时,有系统帮我们去找指定的目录。

6.java虚拟机JVM

它是运行所有java程序的抽象计算机,是java语言的运行环境,它是java最具吸引力的特性之一,JVM读取并处理编译过的与平台无关的字节码(class)文件。

java编译器针对JVM产生class文件,因此是独立于平台的。java解释器负责将JVM的代码在特定的平台上运行。

java虚拟机是不夸平台的。

JVM整个类加载的过程的步骤:装载—链接—初始化

a.装载:查找和导入二进制文件(class文件)

b.链接:(1)校验:检查二进制数据的正确性(2)准备:给类的静态变量分配空间并初始化存储空间(3)解析:执行

c.初始化:激活类的静态变量的初始化和java代码的静态块。

7.javac命令和java命令分别做什么事情呢?

javac:负责的编译部分,当执行javac时,会启动java的编译器程序。对指定扩展名的.java文件进行编译。生成了JVM可以识别的字

节码(class)文件,也就是java的运行程序。

java: 负责运行部分,会启动JVM加载运行时所需的类库,并对class 文件进行执行。一个文件要被执行,必须要有一个执行的起始点,这个点就是main方法。

8.总结:java程序的组成:java源文件,字节码(class)文件。

二:

9.注意:一个java源文件可以定义多个java类,但其中最多只能有一类被定义成public类,若源文件中包括了public类,源文件必须和该public类同名。

10.变量是java程序的基本单位,有了变量,java程序的运算更加灵活。所谓变量是指一个可以发生改变的量(定义一个符号)。

常量:是在程序中不会变化的数据。

变量:其实就是内存中的一个存储空间,用于存储常量数据。

作用:方便与运算,因为有些数据不确定。所以确定该数据的名词和存储空间。

特点:变量空间可以重复使用。

什么时候定义变量?只要是数据不确定的时候,就定义变

量。

11.声明变量时,数据类型有什么作用?

作用:a.决定了变量的类型b.决定了变量的范围。

12.变量的作用域:

作用域从变量定义的位置开始,到该变量所在的那对大括号结束;

生命周期:

变量从定义的位置开始就在内存中活了,到它所在的作用域的时候就在内存中消失了。

13.代码注释:

单行注释:// 作用://后到本行的所有字符会被编译器忽略;

多行注释:/* */ 作用:/* */之间的所有字符会被编译器忽略;

文档注释:/** */ 作用:/** */之间的所有字符会被编译器忽略,java特有的(用于生成文档)。

14.java中的标示符:

可简单理解为在java程序中为了增强阅读性自定义的名称。比如:

类名,方法名,变量名等。

命名规则:a.由字母、数字、下划线、$组成,不能以数字开头注意:此处的字母还可以是中文和日文等。

b.大小写敏感

c.不得使用java中的关键字和保留字

d.别用java API里面的类名作为自己的类名。

e.类名和方法名必须采用有意义的单词命名,类名的每个单词的首字母要大写,变量必须采用驼峰式命名,除了第一个单词全部小写外,其他的单词的首字母都要大写。

15.八大基本类型:

数据类型中文名字节范围

byte 字节性 1 -128—127 (-2的7次方到2的7次方-1)short 短整型 2 -32768-32767(-2的15次方到2的15次方-1)

int 整形 4 -2^31—2^31-1(大约10位)

long 长整形8 2^63—2^63-1 (大约19位)+L,l

float 单精度浮点型4字节精确8位小数+F,f

double 双精度浮点型8字节精确16位小数

char 字符型 2 65535

boolen 布尔型 1 true、false 默认false

16.基本数据类型的转换

向上转换(自动转换):容量小的类型可以自动转换为容量大的数据类型,自动转换时安全的,没有精度损失。

向下转换(强制转换):容量大的的类型转换为容量小的类型,强制转换时不安全的,可能会损失精度。

级别从低到高:byte,char short(这三个平级)-int-long-flaot-double 注意:byte.short.char之间不会相互转换,它们在计算时首先会转换为int类型,boolean类型不可以转换为其他基本数据类型。

17.java运算符:

算术运算符(+ 、- 、* 、/ 、%)

赋值运算符(= 、+=、-=、*=、/=,、%=)

关系运算符(>、>=、<、<=、!=)

条件运算符(&&、||、!&、|、^)

位运算符(&、|、^、~、>>、<<、<<<、>>>)

什么是位运算符?

位运算符: &(按位与),|(按位或),^ (按位异或) ,~ (取反), <<(左移)>> (右移)位运算是计算机最底层的运算,所有的运算都是以它为基础计算出来的,所以它是最快的。

& (按位与):两个对应的二进制位为1时,结果为1,否则为0. | (按位或):两个对应的二进制位只要有一个是1时,结果为1,否则为0.

^ (按位异或) :两个对应的二进制位同号为0,异号为1.

~ (取反):二进制位按位取反,即0变1,1变0.

<<(左移):例子:00000011 << 2 ,将二进制位向左移2位,高位丢掉,低位补0,结果为:00001100.

>> (右移):例子:00001111 >> 2 ,将二进制位向右移2位,高位补零,低位丢掉,结果为:00000011.

表达

“三目运算符”,语法格式:

x ? y : z; x?y:z;

其中x为boolean类型表达式,先计算x的值,若为true,则整个三目运算符的结果是表达式y的值,否则就是z的值。

从左到右,从上到下,优先级越来越低。

>>>>>>>>自增自减:>算数运算符>关系运算符>短路逻辑运算符>逻辑运算符>三元运算符>赋值运算符

表达式运算

什么叫表达式:由运算符和操作数组合起来的式子就叫表达式。

1.做整型算术运算时,char,byte,short的变量将自动提升为int类型后计算。

2.整型和浮点型运算时,将提升为浮点型运算。

3.字符串与基本类型相加,基本类型将转换为字符串后相加。

两个不同类型的数做运算时,两个操作数将提升为同一个类型运算。

& 和&&区别:& :无论左边结果是什么,右边都参与运算。

&&:短路与,如果左边为false,那么右边不参数与运算。| 和|| 区别:|:两边都运算。

||:短路或,如果左边为true,那么右边不参与运算。

18.if与switch的区别

a.switch仅能测试相等的情况

b.if能计算任意布尔表达式

c.switch仅能查找表达式值与某个开始常量是否匹配

d.switch中不能有两个相同的开始(case值)常量。

switch 后面的小括号中的变量应该是byte,char,short,int四种类型中的一种;java1.7后String,enum 也可以

switch(条件){

case 值1 :

语句;

break;

case 值2:

语句;

....

break;

default:

语句;

}

19.循环语句:

a.for循环:

for(int i = 0; i < 10; i++){ 语句;

}

b.while循环:

循环变量赋初值;

while(boolean添加){ 语句;

循环变量改变;

}

c.do...while循环:

循环变量赋初值;

do{

语句;

循环变量改变;

}while(布尔条件);

while:事先不需要知道循环执行多少次;

do...while : 同上,只是至少要执行一次(先做,后判断)

for: 需要知道循环次数。

for(初始化表达式(1);循环条件表达式(2);循环后的操作表达式(3))

{

执行语句;(4)

}

执行顺序:(1) →(2) →(4) →(3) →(2) →(4) →(3)

20.流程控制:

break语句,continue语句,return语句区别?

Break 表示停止break后面的语句不再执行;continue 表示跳过该

次,后面的语句还可以继续执行;return 表示返回返回一个值;

break语句,continue语句,

①:若这两个语句离开应用范围,存在是没有意义的。

②:这个两个语句后面都不能有语句,因为执行不到。

③:continue语句是跳过本次循环,继续下次循环。

④:标签的出现,可以让这两个语句作用于指定的循环。

----------------------------------三:-------------------------------------------------------- 21.数组:是指同种数据类型的集合

一维数组:int [] array = new int [10];(动态)

int [] array = {1,3,4,65,5,11,13,14,165,15};

二维数组:int [][] array = new int [4][3];(动态)

int [][] array = {{1,3,4},{65,5,11},{13,14,165},{2,5,8}};

声明不规则的二维数组:

数据类型[][] 数组引用名= new 数据类型[行数][];

数组引用名[第几行] = new 数据类型[列数];

22.排序法

a.冒泡排序法: 有n个有限序列的元素,需要n-1趟排序,每一趟排序冒出一个最大值,每一趟的实现方法是相邻元素的两两比较并交换,以此类推。

int [] arr={5,1,6,4,2,8,9};

for (int i=0;i

for (int y=0;y

{

if(arr[y]>arr[y+1]){//相邻两元素相比

int temp = 0;

temp = arr[y];

arr[y] = arr[y+1] ;

arr[y+1] = temp;

}

}

}

b.选择排序法:有n个有限序列的元素,每一次从没有排序的序列(数组)中选择一个最小的元素(保留它的下标),从第0个位置开始进行交换,以此类推。

int []age = {1,2,36,363,56,95,12,32,1232,3263};

for (int i = 0; i < age.length; i++) {

for (int j = i+1; j <= age.length-1; j++) {

if(age[i] > age[j]){

int temp = age[i];

age[i] = age[j];

age[j] = temp;

}

}

} //输出为:[1, 2, 12, 32, 36, 56, 95, 363, 1232, 3263]

c.插入排序法:有n个有限序列的元素,从第二次元素开始,就要开始进行插入,每一次对没有排序的每一个元素同应经排好序的元素进行比较,找到要插入的位置,进行插入,在插入之前要进行位移操作;

23. 查找法

a. 顺序查找法

最简单的一种方式,就是从第一个找到最后一个。效率最低的。

b. 拆半查找法

只适用于已排序的数组。这种查找方式的性能是最高的。所谓拆半查找法就是将数组进行拆半。

24. java中的两大数据类型

a. 基本数据类型(byte char short int long float double boolean )

b. 其它的全是引用类型

都是可以new的, new就是用来分配空间的。然后用一个这种类型的引用变量进行指向。

25. 字符串及字符串数组

字符串: 由多个字符构成的一串字符串。

创建字符串变量:

String str = new String("字符串常量");

String str = new String(字符串变量);

String的常用方法

1)int length() 获取长度

2)char charAt(int index) 返回指定索引(位置)的字符

3)int compareTo(String s) 按照字典顺序比较两个字符串,相等返回0,小则返回-1,大则返回1

4)int compareToIgnoreCase() 忽略大小写比较

5)String concat(String str) 链接字符串到结尾,返回新的字符串

6)boolean endWith(String str) 判断字符串是否以指定的后缀结尾7)boolean startWith(String str) 判断字符串是否以指定字符开头

8)boolean equals(Object obj) 判断两个字符串的内容是否相等

9)int indexOf(int i) 返回指定字符在字符串中第一次出现的位置

int indexOf(String str) 返回指定字符在字符串中第一次出现的位置

int indexOf(String str, int index) 从指定位置开始返回指定字符在字符串中第一次出现的位置

10)int lastIndexOf(String str) 返回指定字符串最后一次出现的位置

11)String[] split(String str) 拆分字符串

12)String substring(int start,int end) 返回从start到end下标的字符串,如果只有start那就返回start到最后的字符串

13)String trim() 去掉字符串前后的空格

14)static String valueOf(int number) 将int(char/boolean等)转换成字符串

15)String toUpperCase() 将字符串转成大写

16)String toLowerCase() 将字符串转成小写

17)Char[] toCharArray() 将字符串转成char数组

18)String replace(String old,String new) 将old字符全部修改成new 字符串

四:----------------------------------------

26.方法意义:

a.实现模块化编程,使程序结构更加的清晰;

b.减少重复代码的编写。

27.参数:

a.形式参数:在定义方法的时候(小括号中)所带的参数称为形式参数;简称形参,形参一定要有具体的数据类型和变量名。

b.实际参数:在调用方法的时候小括号中所传递的参数称为实际参数;简称实参,实参可以是变量,常量,表达式。

两者关系:实参单向传递给形参。

28.值传递和引用传递:

a.值传递:在java中只有八大基本数据类型是值传递,实参向形参传递的是变量中的值,传递后,形参与实参是两个变量,是互不相关的。

b.引用传递:java中除了八大基本数据类型以外全部都是引用传递,实参向形参传递的是"地址值",传递后,实参和形参指向或引用到同一块内存空间,操作同一块空间中的内容,形参变量的改变会影响到实参。

29.成员变量和局部变量

局部变量:不是声明在类体括号里面的变量;(方法里)

局部变量使用前必须初始化值;

局部变量没有默认初始化值;

局部变量的作用域是从定义开始到定义它的代码块结束;

成员变量:在方法体外,类体内声明的变量,又称字段(Field)或全局变量;(其实Java中没有全局变量,由于Java是面向对象语言,所有变量都是类成员)

成员变量的作用域是整个类中;

30.递归:是指方法自己直接或者间接的调用方法自己本身,去实现某种功能。

31.类:类是一种复合的数据类型,称为类类型。它是从现实中抽象出来的概念。将一类事物的共有特性和行为封装成一个整体,这个整体就是类。

32.封装:是指将一类事物的共有特性和行为用大括号的形式封装成一个整体,取了一个有意义的类名,这就是类的封装。

封装意义:将类的数据隐藏起来,控制用户对类的修改和访问数据的程度,就是对外界的权限的控制。

33.对象就是一个类的类变量,类是一种数据类型,对象是类的实例,在java中每个对象都拥有一份自己的成员属性和成员方法。类是不占内存空间的,只是一种类型或者模板,而对象是占内存空间的;从对象到类是从具体到抽象的过程,从类到对象是从抽象到具体的过程。

34.类加载:将硬盘上的字节码(class)文件加载到java虚拟机(JVM)中,形成类类型,称为类加载。

35.类变量与成员变量区别:

a.类变量(静态变量)是属于这个类的,类变量存储在静态区中,只有唯一的一个;成员变量是属于一个对象的,每个对象都拥有一份成员变量。

b.类变量可以直接用"类名.变量名" 来操作这个类变量

36.静态方法(类方法)

a. 作用:静态方法主要用于操作静态变量(类变量)

b.注意:类方法不能调用成员变量,不能使用this关键字

c.静态块:

static{

给静态变量赋值;

语句;

}

好处: 静态块主要用于给类变量赋值, 静态块只会被执行一次(在类加载的时候)。

37.注意:静态方法只能访问静态变量和调用静态方法,不能访问非静态变量和调用非静态方法;

原因是静态变量和非静态变量的分配内存空间的时机不一样,静态变量和方法是在类加载的时候分配的,类加载只加载一次。而非静态的变量和方法是在生成对象实例的时候分配内存空间。

38.构造方法:

a.概念:构造方法是一个特殊的方法,在创建一个类的对象时使用。方法名与类名一致,且无返回值类型的修饰的方法叫构造方法。在new创建一个对象时自动调用构造方法。

b.作用:一个对象的成员属性的的初始化,用于给对象进行初始化,而且初始化动作只执行一次。

c.创建对象的步骤:

(1)用new分配这个对象所需的空间(2)执行成员属性的默认初始化

(3)执行构造方法中成员属性的显示初始化(4)返回本对象的地址(系统自动完成)

d.若自己定义类的时候没有创建构造方法,系统会自动创建一个无参的构造方法,若创建了构造方法,系统将不会创建那个无参的构造方法。

39.this的含义:

a.this代表本对象,this主要在一个类中成员方法和构造方法的使用。this用来调用本对象的其他的成员属性和成员方法。

b.this使用:

(1)调用成员属性:this.成员属性(2)调用成员方法:this.成员方法

(3)在一个构造方法中调用其它的构造方法:this.([参数])

40.方法重载:

a.概念:在同一个类中,方法名相同,但形参列变不同(主要指参数的个数或者参数的类型不同)

说明: 一般成员方法和构造方法都可以进行方法重载。

相关文档