黑马程序员技术交流社区

标题: JAVA知识点归纳 [打印本页]

作者: denxinzlz610    时间: 2016-6-22 00:36
标题: JAVA知识点归纳
sleep() 和 wait() 有什么区别?
sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,把执行机会给其他线程,但是监控状态
依然保持,到时后会自动恢复。调用sleep不会释放对象锁。
wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只
有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
final, finally, finalize的区别。
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
finally是异常处理语句结构的一部分,表示总是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提
供垃圾收集时的其他资源回收,例如关闭文件等。
Overload和Override的区别。
方法的重写Overriding和重载Overloading是Java多态性的不同表现。
重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如
果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。
子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个
类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载
(Overloading)。Overloaded的方法是可以改变返回值的类型
error和exception有什么区别?
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这
样的情况。
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。
java语言中有没有goto关键字?
其实goto这个词是C语言中的,goto语句通常与条件语句配合使用,可用来实现条件转移, 构成循环,跳出
环体等功能。而在结构化程序设计中一般不主张使用goto语句, 以免造成程序流程的混乱,使理解和调
试程序都产生困难。但是在java语言中,goto这个词只是作为了保留字,还没有使用。那是因为java语言讲
究简单,方便。
JAVA的特点:
1简单易用、完全面向对象;
2与平台无关性、可扩展性强;
3可移植性高、支持分布式编程;
4健壮、安全可靠并性能优异;
5支持多线程开发技术
6支持动态开发。
Java编程规范
    A、命名规定
        包 :包名应该是小写的名词。如:package shipping.object
        类:类名应该是名词,大小写混合,每个单词的首字母大写。如:class AccountBook
        接口:接口名的大小写应该与类名一样。如:interface Account
        方法:方法名应该动词,大小写混合,首字母小写。每个方法名中,以大写字母区分单词。限制使
用下划线。如:balanceAccount( )
        变量:所有的变量应该是大小写混合,首字母小写。由大写字母区分单词。限制下划线的使用。
:currentCustomer
        常数:基本类型常数应该是全部大写的由下划线区分的单词。如:HEAD_COUNT、MAXIMUM_SIZE、MIN_VALUE
    B、程序主体结构规定
        控制结构:所有语句,即使是一条语句,如果是某控制结构的一部分,都要使用大括号({ })括
起来。


        空格:在任意行上只放置一条语句,并且使用2或4个空格缩进使代码更易读。


        Java代码的位置:所有代码都存在于一个类里


        例如:修饰符 class 类名              


                {


                   程序代码              


                }


       注意:


           Java是严格区分大小写的;


           功能执行语句以(;)结束,这个分号必须是英文输入法中的(;);


            连续的字符串不能换行,可使用(+)连接。




基本数据类型之间的兼容性





基本数据类型之间的转换:“小”的数据类型可以直接赋给“大”的数据类型。“大”的不能赋值给“小”

的数据类型(会出现编译错误)。



数据类型大小关系如下:



整数类:long >int > short > byte   



浮点型:double >float





注意:



char 可以赋给long和int ,但是不能赋给short 和byte(编译错误) 。



char 可以赋给float和double。



当整数型常量被声明为long类型时,只能赋值给long型变量。



当整数型常量在0~65535之间时,可以被赋值给char型变量。



char型常量可以被赋值给整数类变量,只要整数变量的类型可以容纳char型文字常量所表示的数值。



浮点型常量默认为double型,而double型常量不能赋值给float型变量。



boolean与其他数据类型没有兼容性。





数据类型转换



1、自动类型转换(隐式类型转换)



需要同时满足两个条件:



1)、两种类型彼此兼容



2)、目标类型的取值范围要大于源类型



2、强制类型转换(显示类型转换)



当两种类型不兼容,或目标取值类型范围小于源类型时,自动类型转换无法进行,需要进行强制类型转换。



数据类型强制转换的格式为:



(数据类型)数据表达式;



例如:int i = 5;  byte b = (byte)i;





变量的作用域



变量的作用域指一个变量起作用的范围,它决定了一个变量何时可以访问、何时不可以访问。Java中任何变

量的作用域都从该变量声明之后开始,并且只在该声明的语句块中使用,也就是该变量只能在声明它的那个

花括号{}中使用。



变量有分为成员变量和局部变量。



成员变量:在类中声明的变量称为成员变量,又叫全局变量。



使用范围:通常在类开始处声明,可在整个类中使用。



局部变量:在方法或块(块由两个花括号)中声明的变量称为局部变量。



使用范围:从声明处开始到它所在方法或块的结束处。





例:





{




    int x = 4;

     //这之间只有x可以访问

     int y = 1;

     //x和y可以访问

     {

         int z = 2;

         //x、y、z都可以访问

         z = 5;

     }

    x = 4;

     //只有x和y可以访问,不可以访问z


}  





Java代码的注释


作用:

1)、解释程序中某些部分的作用和功能,提高程序的可读性。


2)、可以使用注释暂时屏蔽某些语句,在程序调试时使用。


注释的形式:


1)、单行注释


int c = 10; //定义一个整型


2)、多行注释


/*


int c = 10; //定义一个整型


int x = 5;


*/


注意:/*…*/中可以嵌套”//”注释,但不能嵌套”/*…*/”。


3)、文档注释


“/** ...............*/”。



6、Java中的标识符


1)、变量,方法,类和对象的名称都是标识符,程序员需要标识和使用的东西都需要标识符。


2)、在Java语言里标识符以字母或下划线、$符号开头,后面字符可以是字母、数字、下划线、$符号。(其他符号都不能用来命名标识符)


3)、标识符对字母大小写非常敏感,必须区分大小写,但是没有长度限制。


4)、关键字不能用作标识符命名。


5)、标识符中不能包含空格。


6)、标识符是由Unicode字符组成的,因此可以使用汉字作为标识符(不推荐,尽量不用);


7、关键字


Java中一些赋以特定的含义、并用做专门用途的单词称为关键字,也可叫保留字。关键字不能作为普通的标识符使用。


所有Java关键字都是小写的,IF、THIS、NEW等都不是Java关键字;


goto和const虽然从未使用,但也作被为Java保留关键字;


8、java基本数据类型

基本数据类型包括:整型、浮点型、字符型、逻辑型(布尔型)。



数据类型


名称


位长


默认值


取值范围



布尔型


boolean


1


false


true,false



字节型


byte


8


0


-128~127



字符型


char


16


‘\u0000’


‘\u0000’~‘\uffff’



短整型


short


16


0


-32768~32767



整型


int


32


0


-2147483648~2147483647



长整型


long


64


0


-9223372036854775808~9223372036854775807



浮点型


float


32


0.0


±1.4E-45~±3.4028235E+38



双精度型


double


64


0.0


±4.9E-324~±1.7976931348623157E+308


注意:
整数类型数据用于描述一个一定大小范围内的整数。浮点类型数据用于描述一个范围很大的实数;
浮点类型数据有一定的精度限制。字符类型为char,它用于表示一个字符,使用单引号’在 Java中char类型为16字节,采用Unicode表示。

逻辑类型为boolean,它用于表示真和假;boolean类型只有两个值真(true), 假(false);boolean类型有自己的运算,不能参与其他数据类型之间的运算。

9、常量常量就是程序里持续不变的值,是不能改变的数据。

声明常量的格式如下:final类型 常量名[,常量名]=值;Java中的常量包括整型常量、浮点型常量、布尔常量、字符常量等。

整型常量:十进制:不能以0开头,多个0~9之间的数字

十六进制: 以0x或0X开头 0x8a 0X56d

八进制:必须以0开头 034 0376

长整型:必须以L结尾 87L 345L

浮点数常量:float型:2e3f 0.6f

double型:4.1d 1.23d

布尔常量:true 和 false

字符常量: ‘a’ ‘5’

字符串常量:“hello” “8698” “\nmain”

转义字符\n表示换行

null常量:null,表示对象的引用为空。


10、变量在java语言中存储一个数据信息,必须将它保存到一个变量中。

变量在使用前必须有定义,即有确定的类型和名称。

声明变量的语法:

类型 变量名[, 变量名][=初值];

例如:int i; char c; float a, b, c;

变量的声明有三种形式:1、声明变量。例如: int i;2、变量赋值。

在变量赋值之前要先声明变量。例如:int i; i=5;3、变量的初始化。例如:int i = 8;





String、 StringBuffer和StringBuilder的区别?


String:长度给定不可变,当多个字符串联合时要先转为StringBuffer,再联合,速度慢。

StringBuffer:长度可变,可以将多个字符串值直接联合,效率高,是线程安全的

StringBuiler:长度可变,可以将多个字符串值直接联合,效率更高,是线程不安全的





抽象类和接口的区别?


(1)接口可以被多重implements,抽象类只能被单一extends




(2)接口只有定义,抽象类可以有定义和实现


(3)接口的字段定义默认为:public static final, 抽象类字段默认是"friendly"(本包可见)


当功能需要累积时用抽象类,不需要累积时用接口。



作者: Sbbbbbbbbbb    时间: 2016-6-22 21:18
学习之。学习之




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2