JavaSE知识点总结(个人整理)
- 格式:pdf
- 大小:57.12 KB
- 文档页数:25
java se 知识点总结Java SE(Java Standard Edition)是Java的核心部分,它包含了Java语言的基础语法、面向对象编程、异常处理、集合框架、泛型、多线程、网络编程等知识点。
以下是Java SE的一些核心知识点总结:1.基础语法:包括变量、数据类型、运算符、控制流(if、switch、while、for等)、函数等。
2.面向对象编程:这是Java的核心特性,包括类和对象的概念,封装(private、public、protected关键字),继承(extends关键字),多态(方法重载和方法重写)。
3.异常处理:Java中的异常处理使用try-catch-finally语句块进行,还包括抛出异常(throw关键字)和声明异常(throws关键字)。
4.集合框架:Java的集合框架包括List、Set、Queue和Map等接口以及它们的实现类,如ArrayList、HashSet、LinkedList和HashMap等。
5.泛型:泛型提供了编译时类型安全,它允许程序员在编译时定义和使用类型参数化的类或方法。
6.多线程:Java SE提供了对多线程编程的支持,包括Thread类和Runnable接口,以及使用synchronized关键字实现线程同步。
7.网络编程:Java SE提供了对网络编程的支持,包括使用URL和URLConnection进行基本的URL访问,使用Socket和ServerSocket进行TCP编程,以及使用DatagramSocket和DatagramPacket进行UDP 编程。
8.IO流:Java SE提供了强大的IO流API,用于读取和写入文件、网络连接等。
包括InputStream、OutputStream、Reader和Writer等类。
9.正则表达式:Java SE提供了对正则表达式处理的支持,可以使用Pattern和Matcher类进行正则表达式的编译和匹配。
javase知识点归纳总结JavaSE是Java Platform, Standard Edition(Java标准版)的缩写,是Java语言的标准版开发平台,是整个Java EE、Java ME平台的核心。
JavaSE包含了Java语言基础、程序设计、常用API等等,是Java开发的基础。
本文将对JavaSE的知识点进行归纳总结,帮助大家更好地理解JavaSE的核心内容。
JavaSE知识点归纳总结:一、Java语言基础1. 数据类型Java语言的数据类型包括基本数据类型和引用数据类型。
基本数据类型包括整型、浮点型、字符型、布尔型,引用数据类型包括类、接口、数组。
2. 变量与常量Java语言的变量可以分为基本数据类型变量和引用数据类型变量,常量是在程序运行过程中不会发生改变的量。
3. 运算符Java语言的运算符包括算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符等。
4. 控制流程Java语言的控制流程包括顺序结构、分支结构、循环结构。
5. 方法Java语言的方法是一段有名字的代码块,可以重复使用,可以有参数和返回值。
二、面向对象编程1. 类与对象Java语言是一种面向对象的编程语言,类是对象的设计图,对象是类的一个实例。
2. 继承与多态继承是子类继承父类的属性和方法,多态是同一个方法针对不同的对象有不同的表现形式。
3. 封装与继承封装是将数据和方法进行了封装,隐藏了内部的实现细节,继承是子类继承父类的属性和方法。
4. 接口与抽象类接口是一种抽象的数据类型,抽象类是抽象了一些共同的特征和行为的类。
5. 内部类内部类是定义在另一个类中的类,可以访问外部类的成员。
三、异常处理1. 异常的分类Java语言的异常包括编译时异常和运行时异常,编译时异常需要捕获或声明,运行时异常可以不捕获也不声明。
2. 异常的处理Java语言的异常处理包括try-catch语句块、throw语句和throws关键字。
JavaSE核⼼知识点总结⼀:Java 概述⼀、简介1. 定义:Java 是⼀门编程语⾔,不仅吸收了语⾔的各种优点,还摒弃了C++⾥难以理解的、等概念,因此Java语⾔具有功能强⼤和简单易⽤两个特征。
Java语⾔作为静态⾯向对象编程语⾔的代表,极好地实现了⾯向对象理论,允许程序员以优雅的思维⽅式进⾏复杂的编程。
应⽤在、、和等领域。
2. 发展历程1. 1996年1⽉,Sun公司发布了Java的第⼀个开发⼯具包(JDK 1.0),这是Java发展历程中的重要⾥程碑,标志着Java成为⼀种独⽴的开发⼯具。
2. 1999年6⽉,Sun公司发布了第⼆代Java平台(简称为Java2)的3个版本:(Java2 Micro Edition,Java2平台的微型版),应⽤于移动、⽆线及有限资源的环境;(Java 2 Standard Edition,Java 2平台的标准版),应⽤于桌⾯环境;(Java 2Enterprise Edition,Java 2平台的企业版),应⽤于基于Java的应⽤服务器。
Java 2平台的发布,是Java发展过程中最重要的⼀个⾥程碑,标志着Java的应⽤开始普及。
3. 2005年6⽉,在Java One⼤会上,Sun公司发布了Java SE 6。
此时,Java的各种版本已经更名,已取消其中的数字2,如J2EE更名为,J2SE更名为JavaSE,J2ME更名为。
4. 2007年3⽉起,全世界所有的开发⼈员均可对Java源代码进⾏修改。
5. 2009年,甲⾻⽂公司宣布收购Sun。
2014年,甲⾻⽂公司发布了Java8正式版⼆、编程开发1. 开发环境1. (Java Development Kit)称为Java开发包或Java开发⼯具,是⼀个编写Java的Applet⼩程序和应⽤程序的程序开发环境。
JDK是整个Java的核⼼,包括了Java运⾏环境(Java Runtime Environment),⼀些Java⼯具和Java的核⼼类库(Java API)。
javase知识点总结JavaSE(Java Standard Edition)是Java语言的标准版本,是Java程序开发的基石。
JavaSE包含了Java程序开发所需的核心框架和库,是Java语言最基本的一个版本。
JavaSE知识点总结如下:一、Java语言基础Java语言基础是JavaSE中最基础的知识点,主要包括数据类型、运算符、控制语句、方法和数组等基础概念。
其中,数据类型是Java程序中的基本概念,包括整型、浮点型、布尔型、字符型等;运算符用于进行算术、逻辑和位运算等操作;控制语句包括if、switch、for、while等,用于程序的流程控制;方法是Java中的函数,用于封装一些可重复使用的代码;数组是Java中的数据类型,用于存储相同类型的数据。
二、面向对象编程面向对象编程是JavaSE的核心内容之一,面向对象编程包括类的定义、对象的创建、继承和多态等内容。
类是Java程序的基本组成单元,用于封装数据和行为,对象是类的一个实例,Java中使用new关键字来创建对象。
继承是指子类继承父类的属性和方法,Java中使用extends关键字来实现继承;多态是指同样的方法在不同对象中的行为不同,Java中使用方法重载和方法重写来实现多态。
三、异常处理Java中异常处理是程序设计中的一个重要内容,JavaSE中也包含了相关的异常处理机制。
在Java中,异常分为Checked Exception和Runtime Exception,Checked Exception需要在代码中进行处理,Runtime Exception则可以不处理。
Java中使用try-catch块来捕获异常,使用throws关键字来声明方法会抛出哪些异常。
四、输入输出流输入输出流是JavaSE中重要的知识点之一,Java中提供了各种输入输出流,包括字节流和字符流,用于处理文件、网络等数据的读取和写入。
Java中的输入流主要包括InputStream和Reader,输出流主要包括OutputStream和Writer,其中,字节流以字节为单位读取数据,字符流以字符为单位读取数据。
1根本知识点1.JDK〔Java Developer Kit〕2.Applet 小应用程序init() start() stop() destroy()没有构造方法3.ANSI America National Standard Institute (ANSI编码在不同国家是不一样的)4.小技巧:交换文本中所有空行 ^\s*\n 同时改一下option5.习惯 Java源文件名词第一个大写,包名小写;6.晋级三个因素:1.进步效率。
2.简化书写。
3.进步平安性。
7.Javac Test.java 编译Java Test 运行 java.exe 是JVM8.打包编译javac –d . test.java9.Main 方法的args数组用来存放命令参数〔command arguments〕10.命名规那么字符,$,下划线开头11.防止用单个字母命名变量尽可能在他被使用的地方附近定义12.>> 算数运算符 >>> 逻辑运算〔高位补零〕13.值域小的可以直接赋值给值域大的;〔自动类型提升〕14.数组1.声明时可以不指定大小,使用时必须指定,以便向系统申请指定的空间;2.type[] arrayName=new type[size];3.每个数组都有成员变量length 下标最大为length-14.Type[] arr1,arr2[]等价于 arr1[],arr2[][]; arr1和arr2维数不同,不能赋值;15.Java各种循环的判别式都是Boolean类型的;16.只有成员变量,系统才自动赋一个默认值对于局部变量,必须初始化;17.素数的判断for(int num=2;num<=10000;num++,flag=false){for(int i=2;i<Math.sqrt(num);i++){if(num%i==0){flag=true;break;//不是素数}}If(flag==false){//是素数}}18.Java编程语言只有值传递参数〔对象的引用,对象的值〕19.Java整数默认为int型,小数默认为double型20.非静态方法不能出如今Main〔〕函数中21.哈希码是由对象的实例域产生的一个整数,假设自定义类,就要实现这类的hashcode〔〕22.可变参数:其实就是上一种数组参数的简写形式。
javase的知识点JavaSE(Java Standard Edition)是Java平台的标准版本,它为开发和部署桌面、嵌入式和服务器应用程序提供了基础。
以下是一些JavaSE的重要知识点:1. 数据类型和变量:JavaSE中包括基本数据类型(如int、double和boolean)和引用数据类型(如字符串和数组)。
了解各种数据类型的特性以及变量的声明和初始化方法很重要。
2. 控制流语句:JavaSE支持常见的控制流语句,如条件语句(if-else和switch)、循环语句(for、while和do-while)和跳转语句(break和continue)。
熟悉这些语句的用法能够编写更具有逻辑性和可读性的代码。
3. 面向对象编程(OOP):JavaSE是一门面向对象的编程语言,包括类、对象、继承、封装、多态等概念。
理解OOP的基本原则和常用设计模式,能够编写可重用、可维护和可扩展的代码。
4. 异常处理:JavaSE使用异常机制来处理运行时错误。
了解异常的类型、如何捕获和处理异常以及如何定义自定义异常类,能够使程序具备更好的错误处理机制。
5. 输入输出(I/O):JavaSE提供了灵活的I/O类和接口,用于读写数据流、文件和网络通信。
熟悉常用的输入输出操作能够使程序与外部环境进行数据交互。
6. 集合框架:JavaSE提供了丰富的集合类和接口,如List、Set、Map等。
了解集合的特性和常用操作,能够高效地处理和组织数据。
7. 线程编程:JavaSE支持多线程编程,可以同时执行多个任务。
了解线程的生命周期、同步机制和线程池的使用方法,能够提高程序的并发性和性能。
8. 常用类库:JavaSE提供了许多常用的类库,如字符串处理、日期时间操作、数学计算等。
熟悉这些类的用法,可以方便地实现各种常见功能。
以上仅是JavaSE中的部分重要知识点,掌握这些知识可以帮助开发人员编写高质量、可靠和可维护的Java程序。
JavaSE知识点一、继承,封装,多态1、分类我们可以把JAVA中的类分为以下三种:类:使用class定义且不含有抽象方法的类。
抽象类:使用abstract class定义的类,它可以含有,也可以不含有抽象方法。
接口:使用interface定义的类。
在这三种类型之间存在下面的继承规律:1.类可以继承(extends)类,可以继承(extends)抽象类,可以继承(implements)接口。
2.抽象类可以继承(extends)类,可以继承(extends)抽象类,可以继承(implements)接口。
3.接口只能继承(extends)接口。
2、继承(inheritance)继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。
这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。
继承是为了重用父类代码,同时为实现多态性作准备。
构造方法在实例化的时候调用的,而子类既然继承了父类,那就具备了父类所有的属性以及方法,当子类实例化的时候就先调用父类的构造了,如果子类的构造方法中没有通过super显式调用父类的有参构造方法,也没有通过this显式调用自身的其它构造方法,则会默认先调用父类的无参构造方法。
你想那么子类中从父类继承的字段,要谁来初始化呢?父类中有这些字段的初始化方式,所以最好的选择就是用父类的构造方法。
java创建对象的三个步骤就是,申请内存,调用构造方法,返回对象引用。
3、封装(encapsulation)类使得数据和对数据的操作集成在一起,从而对使用该类的其他人来说,可以不管它的实现方法,而只管用它的功能,从而实现所谓的信息隐藏。
封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构,同时保护了数据。
4、多态(polymorphism)方法的重写、重载与动态连接构成多态性。
Java之所以引入多态的概念对于多态,可以总结它为:一、使用父类类型的引用指向子类的对象;该引用只能调用父类中定义的方法和变量;二、如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法;(动态连接、动态调用)三、变量不能被重写(覆盖),”重写“的概念只针对方法。
JAVASE基础知识-图文1、课程名称:JAVASE基础知识2、知识点2.1、上次课程的主要知识点1、在Oracle的学习之中有以下几点必须重点掌握:·数据的查询和更新操作、事务处理;·表的建立、约束的使用、序列的使用;·表的设计范式应该是理解。
2.2、本次预计讲解的知识点1、JAVA学习层次;2、Java简介及JDK的安装及配置;3、JavaSE的基础程序设计;4、数组及方法的使用。
3、具体内容3.1、Java的学习层次从程序的开发来讲,Java语言是整个JAVAEE体系的核心基础部分,在这一部分之中,只有将核心概念掌握透彻了,知识点的学习:可以根据每一个关键字或者是知识点,联想到其所对应的程序及其概念,以及各个注意事项。
在整个JAVA基础部分之中,有以下三个主要部分组成:·JAVASE的基础部分:基本程序的一个恢复以及数组及方法的使用;·JavaSE的面向对象:此部分概念很多,而且必须全部记下;·JavaSE的应用部分:类集、IO、类库、JDBC等等。
才有可能为以后的学习提供方便。
其他的有许多的了解部分:多线程、网络编程;理解的部分:JavaSE1.5的提供的各种新特性。
在以上的所有知识之中按照重要性来讲,一共有如下几部分:·面向对象:所讲解的一切都是为了抽象类和接口服务的;·类集部分:为数据结构实现;·IO:面向对象的完美体现;·JDBC:为以后的JAVAEE开发做准备呢。
3.2、Java简介(理解)Java:是一门编程语言,而且现在已经形成了一自己的一套完整的开发体系,被大多数的公司所支持,所以现在的Java从整个行业发展来讲,Java平台、.NET平台、AdobeFLE某等已经算是将编程霸占的已经足够多了,因为这些公司·.NET:微软支持;·FLE某:Adobe公司支持;·Java:Oracle/SUN支持、IBM、HP等公司支持。
javase知识点总结JavaSE是Java开发者必备的技能之一,在JavaSE的学习过程中,我们需要掌握的知识点非常多,下面就对JavaSE的知识点进行总结,希望对大家的学习有所帮助。
1、面向对象的概念面向对象是一种编程思想,以类、对象、继承、封装、多态等为核心概念,使程序具有更好的可扩展性、可维护性、可重用性、封装性、高性能等特性。
2、Java语言特点Java语言是一种面向对象的高级语言,具有与平台无关性、自动内存管理、异常处理、安全性、多线程等特点。
3、Java基础语法Java基础语法包括变量、常量、数据类型、运算符、流程控制、数组等。
4、面向对象编程面向对象编程包括类和对象、继承、多态、抽象类、接口等。
5、Java标准类库Java标准类库是Java最基本的集成开发环境,涵盖了文件、输入输出、网络通信、多线程、图形用户界面等方面的API。
6、Java线程Java线程是一种并发编程的基本概念,多线程技术可以改善程序的性能,提高程序的响应速度。
7、Java异常处理Java异常处理是程序在运行过程中出现错误时自动跳转到一个异常处理程序,以保证程序不会意外崩溃。
8、Java IO流Java的IO流分为字节流和字符流,包括输入流和输出流。
Java网络编程可以让程序之间进行数据传输、通信和交互,基于Socket和ServerSocket类实现。
10、Java集合类Java的集合类提供了一系列数据结构和操作,容器类包括List、Set、Map等。
Java泛型可以让程序更加灵活和安全,可以在编译时检查类型的安全。
12、Java反射机制Java反射机制可以动态调用对象的属性和方法,可以灵活地处理运行时类的属性和方法。
Java注解可以提供额外的程序信息或指示编译器进行特定的处理,是编写高效Java 程序的一个重要途径。
14、Java设计模式Java设计模式是一些经典的编程技巧、设计思路和设计模板的总结和归纳。
第1章Java程序设计概述1)开发Java语言的公司?Sun 公司2)Java的3个版本?J2SEJ2EEJ2ME3)Java的三大核心机制虚拟机机制垃圾回收机制代码安全性机制第2章Java语言的开发环境1)JDK是什么?Java开发工具包2)JRE是什么?Java运行环境3)JVM是什么?Java虚拟机4)Java文件的类型?.java文件.class文件第3章Java程序的基本结构1)Java语言区分大小写吗?区分2)main方法是作什么用处的?程序的入口3)语句必须用分号结束吗?必须4)Java中有几种注释,各自的功能单行注释多行注释文档注释5)Java语言的数据类型是强类型还是弱类型?强类型6)Java语言中数据类型的划分?有什么区别?基本数据类型引用数据类型7)基本类型都有哪8种类型?byte short int long float double char boolean8)布尔值可不可以用0或者非0数代替?不可以9)直接写个整数10默认是什么类型的?int类型10)如何让一个整型的直接量变成long型的?在后面加个L或者l11)整型数据在程序中直接使用可以使用什么进制?八进制十进制十六进制12)浮点运算在Java中有没有误差?有误差13)直接写一个3.14的直接量是什么数据类型的?double数据类型14)char型采取的是什么类型的字符集?Unicode编码15)语句和关键字之间可以有任意的空白吗?可以16)标识符有什么起名规则?标示符由数字、字母、下划线、美元符组成首字母不能是数字不能是关键字17)中文的变量名可以吗?可以18)关键字和保留字有区别吗?保留字是没有实际意义的关键字JDK1.5以后关键字和保留字统称为关键字19)true,false,null可以用作标识符命名吗?不可以,它们是关键字20)一条声明语句可以声明多个变量吗?可以21)变量在没有赋值的情况下可以使用吗?不可以22)常量有什么特点?只能被赋值一次23)算数运算符有哪些?+-*/%++--24)++和--放在前面和放在后面有什么区别?++放在前面表示先++再运行表达式++放在后面表示先运行表达式再++25)-5 % 2等于几,5 % -2等于几?-1,126) 5 / 2 结果是不是2.5?不是,等于227)任何数据类型都可以使用> < >= <=运算符吗?不可以,boolean28)’a’ > ’b’这个表达式编译正确吗?正确,’a’和’b’都是字符类型,用unicode编码表示a表示97,b表示98,返回false 29)逻辑运算符有哪些?& | !&& ||30)逻辑与,逻辑或和短路与,短路或有什么区别?31)数据类型转换需要遵循什么原则?小类型向大类型转换自动转换大类型像小类型转换需要强转32)byte b = 10这个语句是正确的,为什么10是int型比byte大还不需要强制转换呢?正确,java中规定byte,short,char可以直接赋值int类型的变量。
2. 面向对象的理解面向对象是Java的基本特征,是软件开发过程使用的基于面向过程一种思维方式,将功能封装进对象,强调具备功能的对象和调用结果,不关注具体实现这个功能的过程。
面向对象特点:是一种更符合人们思考习惯的思想,可以将复杂的事情简单化,将程序由执行者转换成为指挥者。
面向对象特性:封装,继承,多态封装:封装是把数据和方法包装进类中,隐藏其具体实现细节,对外提供公共访问方法。
封装的结果是一个同时带有特征和行为的数据类型。
(安全性,复用性)继承:当一个类的属性与行为均与现有类相似,属于现有类的一种时,这一个类可以定义为现有类的子类。
或者,当多个类具有相同的属性和行为,我们可以抽取出共性的内容定义父类,再创建相似的”兄弟”类时只要继承父类即可。
当子类继承父类后,拥有了父类非私有的方法并可以直接调用。
如果认为父类提供的方法不够强大,子类可以按照子类自身的逻辑重写继承过来的父类方法。
(复用性,可维护性,多态前提)多态:继承是多态的前提,多态是指一种事物具有多种形态,比如猫具有猫类的形态,也具有动物的形态,多态的具体表现是父类引用指向子类对象,父类的引用也可以接收自己子类的对象。
(可维护性,扩展性)面试:跟我谈谈什么是面向对象1 面向对象是基于面向过程的2 什么是面向过程什么是面向对象3 面向对象的特点3. 面向对象和面向过程的区别面向过程强调的是功能行为,分析解决问题所需的步骤,以函数为基础,完成各种步骤的操作和实现。
面向对象是基于面向过程的,将功能封装成对象,强调的是具备了这些功能的对象,让对象去调用方法来解决问题。
面向对象举例4. abstract与哪些关键字不能共存为什么private:私有的方法是不可见的,无法被重写final:被final修饰的方法是最终方法,无法被重写static:被static修饰的方法,要随类加载到方法区,由于抽象方法没有方法体所以不能加载5. static的特点(1) 随着类的加载而加载;优先于对象存在;被所有对象所共享;可以直接被类名所调用。
(2) 静态方法只能访问静态,非静态方法既可以访问静态也可访问非静态(3) 静态方法中不可以定义this、super关键字,因为静态优先于对象存在,this和super所代表的对象还不存在。
6. 类与类、类与接口、接口与接口的关系继承(单继承,多层继承,object),实现(多实现),继承(多继承)7. final、finally、finalize的区别final:可以修饰类、方法和变量,被final修饰的类无法被继承,方法无法被重写,变量为常量只能赋值一次finally:异常处理,和try、catch结合使用,可以添加也可以不添加,用于执行一些必须执行的代码,如释放资源等finalize:Object类中的方法,其中定义了对象要被垃圾收集器回收之前要做的相关的清理工作8. 什么是多态,多态的好处和弊端多态可以理解为事物存在的多种体现形态。
父类的引用指向了自己的子类对象;父类的引用也可以接收自己子类的对象。
提高了程序的可维护性和扩展性弊端:父类的引用只能访问父类中有的成员而无法调用子类中特有的方法10. wait()和sleep()的区别(1)所在的类不同:wait是Object类中的方法,sleep是Thread类中的方法(2)sleep方法没有释放同步锁,而wait方法释放了同步锁,使得其他线程可以使用。
(3)sleep()必须指定时间,wait()可以指定也可以不指定时间。
(4)wait,notify和notifyAll只能在同步方法或者同步代码块里面使用,而sleep可以在任何地方使用(5)sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常16. 对匿名内部类的理解匿名内部类就是没有名字的内部类,是内部类的简化形式。
一般只使用一次的时候使用匿名内部类,匿名内部类本质上是一个匿名子类对象。
匿名内部类的使用前提:内部类继承一个类或实现接口。
匿名内部类包括两个步骤:创建一个类或者接口的子类,即刻创建该子类的对象。
简化书写。
17. IO体系字节流InputStream/OutputStream |--FileInputStream/FileOutputStream:文件字节流,用于文件的读写操作 |--BufferedInputStream/BufferedOutputStream:加缓冲区的字节流,用于提高效率字符流Reader/Writer |--FileReader/FileWriter:文件字符流,用于文本文件的读写操作 |--BufferedReader/BufferedWrite:加缓冲区的字符流,用于提高效率转换流InputStreamReader/OutputStreamWriter:是字节流和字符流之间的桥梁18. 集合体系|--Vector:功能同ArrayList类似,底层也是数组,线程是同步的,所以是安全的,效率较低,数据增长是50%的增长。
|--Set:元素是无序的,元素不允许重复,底层用到了Map|--HashSet:底层hash表,存储的对象最好复写hashCode和equals方法,|--TreeSet:底层自平衡的二叉树,存储的对象具备比较性,有两种方法:自然排序、比较器排序|--Collection |--List:元素是有序的,元素允许重复,因为该集合体系都具有索引|--ArrayList:底层数据结构是数组,查询速度快,增删操作较慢,线程不同步|--LinkedList:底层数据结构是链表,查询效率较低,增删操作快,线程不同步,数据增长是100%的增长。
保证元素不会重复|--Map:数据是以键值对的形式存储的,有的元素存在映射关系就可以使用该集合,|--HashMap:允许有null键或值,线程不同步,键是唯一的|--TreeMap:元素可排序|--HashTable:类似HashMap,不允许有null键或值,线程同步,元素不允许重复21. 局部变量和成员变量区别成员变量定义位置:类中,整个类中均可以访问,通常用private修饰。
内存:成员变量随着对象的建立而建立,存在于对象所在的堆内存中。
默认值:成员变量有默认值。
回收:随着对象的回收而回收。
局部变量定义位置:定义在局部范围,如方法内,语句内等。
内存:局部变量存在于栈内存中。
默认值:没有默认值。
回收:随着作用域结束而回收,通常为语句或方法范围。
22. 同步函数与同步代码块的区别同步代码块使用的锁可以是任意对象。
同步函数使用的锁是this,静态同步函数的锁是该类的字节码文件对象。
在一个类中只有一个同步的话,可以使用同步函数。
如果有多同步,必须使用同步代码块,来确定不同的锁。
所以同步代码块相对灵活一些。
23. 数组和集合的区别容器长度:集合长度可变,数组长度固定存储内容类型:集合存储引用数据类型,数组存储任意类型是否可存储不同类型数据:数组只能存储同种数据类型的元素,集合可以存储不同类型(键值)的元素。
有序可重复:数组是有序可重复的集合中有些是有序可重复的如list,有些是无序不可重复的如set,map24. StringBuffer和StringBuilder的区别StringBuffer是同步的,所以线程安全,但是效率低,StringBuilder是不同步的,所以线程不安全,但是效率高。
StringBuilder要比StringBuffer快。
单线程的程序使用StringBuilder比较好,多线程的情况下可以自己加锁,也可以直接使用StringBuffer。
25. String和StringBuffer区别String对象一经创建就不会发生变化了,即便是赋新值也不是在原对象的基础上改变,而是创建一个新的字符串对象,将引用指向这个新的对象,会造成空间的浪费,效率较低。
StringBuffer只创建一个对象,是在同一个实例的基础之上追加,效率更高,当需要用到String的时候toString就可以了第二部分知识点26. 说明Java中String str=null与String str=""的区别?String str = null 表示声明了一个String对象的引用str,但是没有为其分配内存空间。
String str = "" 表示创建了一个长度等于0的空字符串,并在内存中为其分配了内存空间。
String str = new String("tw"); str在内存中有两个对象, 1.堆内存有一个 new Sting 2.常量池中有一个字符串。
27. 使用运算符"= ="和方法equals() 进行比较对象的区别?使用"= ="算符比较基本数据类型时,比较的是值相等;使用"=="算符比较对象时,比较的是内存地址值使用equals()方法比较对象时,比较的是对象的内容,与地址无关,如果没有重写equals()方法就直接调用的是Object的equals()方法。
28. 接口和抽象类有何区别?(1)成员特点:构造方法:接口没有构造方法;抽象类有构造方法。
成员变量:接口中只有常量;抽象类中可以是常量,也可以是变量。
成员方法:接口中只有抽象方法;抽象类中既有抽象方法,也有非抽象方法。
(2)关系特点:类与类:类与类之间只有单继承,可以有多层继承。
类与接口:类与接口之间是实现关系,可以单实现,也可以多实现。
接口与接口:接口与接口之间是继承关系,可以单继承,也可以多继承。
(3)设计理念:接口对应的设计模式是简单工厂设计模式,抽象类对象的设计模式是模板设计模式。
(5)必须实现抽象类或接口的所有抽象方法才可以实例化。
黑马程序员入学面试题32. 不借用第三方变量,互换两个变量。
n=n^m;m=n^m;//(n^m)^m一个数异或另一个数两次,还是得原来那个数n=n^m//n^(n^m)33. 传统for和增强for有什么区别呢?1. 增强for对集合进行遍历,集合不能为空。
只能获取集合元素,但是不能对集合进行操作。
增强for有一个局限性,必须要有被遍历的目标。
2. 迭代器除了遍历,还可以进行remove集合中元素的动作。
如果是用ListIterator,还可以在遍历过程中进行增删改查的动作。
建议在遍历数组的时候,还是希望是用传统for。
因为传统for可以定义角标。
1.增强for循环和iterator遍历的效果是一样的,也就说增强for循环的内部也就是调用iteratoer实现的,但是增强for循环有些缺点,例如不能在增强循环里动态的删除集合内容。