还剩20页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
面向对象的理解
2.面向对象是的基本特性,是软件开发过程使用的基于面向过程一种思维方式,将功Java能封装进对象,强调具有功能的对象和调用成果,不关注详细实现这个功能的过程面向对象特点是一种更符合人们思索习惯的思想,可以将复杂的事情简朴化,将程序由执行者转换成为指挥者面向对象特性封装,继承,多态封装封装是把数据和措施包装进类中,隐藏其详细实现细节,对外提供公共访问措施封装的成果是一种同步带有特性和行为的数据类型(安全性,复用性)继承当一种类的属性与行为均与既有类相似,属于既有类的一种时,这一种类可以定义为既有类的子类或者,当多种类具有相似的属性和行为,我们可以抽取出共性的内容定义父类,再创立相似的〃兄弟类时只要继承父类即可当子类继承父类后,拥有了父类非私有的措施并可以直接调用假如认为父类提供的措施不够强大,子类可以按照子类自身的逻辑重写继承过来的父类措施(复用性,可维护性,多态前提)多态继承是多态的前提,多态是指一种事物具有多种形态,例如猫具有猫类的形态,也具有动物的形态,多态的详细体现是父类引用指向子类对象,父类的引用也可以接受自己子类的对象(可维护性,扩展性)面试:跟我谈谈什么是面向对象面向对象是基于面向过程的什么是面向过程什么是面向对象面向对象的特点123面向对象和面向过程的区别
3.面向过程强调的是功能行为,分析处理问题所需的环节,以函数为基础,完毕多种环节的操作和实现面向对象是基于面向过程的,将功能封装成对象,强调的是具有了这些功能的对象,让对象去调用措施来处理问题面向对象举例叩集合双例集合,一次存一对,称为键值对要保证键的唯一性M集合没有迭代器,必须先将叩集合转成集合,在使用迭代器,就可以取出结合Map mset;中的元素或者使用集合特有的措施,也可以取出叩集合中虽有元素map entrySetm集合常见子类Map,,:底层数据构造是哈希表构造,线程同步的不容许键值;
1.HashTable null null哈希表构造,不一样步,容许键,值
2.HashMap:nullnull二叉树构造,不一样步,可以对集合众多键进行排序
3.TreeMap:map为何需要配置,什么时候需要
41.path答途径是操作系统的环境变量,目的是但愿在任意目录下都能执行该命令操作起path来愈加以便快捷;是给类提供途径想在其他目录下执行程序时需要配置途径classpath javaclasspath流
42.10输入流输出流Inputstream Outputstream字节输入流字节输出流字节输入流缓冲区字节输出流缓冲区BufferedlnputStream BufferedOutputStream转换流字符输出流InputStreamReader OutputStreamWriter字符流字符输入流缓冲区字符输出流缓冲区BufferedReader BufferedWriter叩与否继承自接口?是叩不是
49.list,set,m collectionlist,set m和的区别
50.arraylist vector一.同步性:是线程安全的,也就是说是同步的,而是线程序不安全的,不vector arraylist是同步的二.数据增长:当需要增长时,默认增长为本来一培,而却是本来vector arraylist的二分之一和的区另
51.hashmap hashtableU一历史原因:是基于陈旧的类的,叩是引进的叩接hashtable dictionaryhashm java
1.2m口的一种实现二.同步性:是线程安全的,也就是说是同步的,而叩是线程序不安全的,hashtable hashm不是同步的三.值只有叩可以让你将空值作为一种表的条目的或hashm keyvalue:给组员变量赋值的方式有几种分别怎么实现?7答:给静态的组员变量赋值A可以通过类中的措施给组员变量赋值私有组员变量的也可以1public voidsetXXX{...}可以通过构造措施给组员变量赋值私有组员变量的也可以{…}2public XXX可以通过代码块完毕组员变量的初始化值私有组员变量的也可以3{xxx=可以通过类名.组员变量赋值4:给非静态的组员变量赋值B可以通过类的措施赋值1public voidsetXXX{...}可以通过对象调用2可以通过代码块完毕组员变量的初始化值3{xxx=怎样理解字符串一旦初始化就不可以被变化不可以被变化说的是常量池中的值,并不是引用是可以重新被赋值的ss、;两者的区别2String si=new Stringabc;^C Strings2=abc第一种方式第一种方式在内存中存在两个字符串,一种是在常量池中,一种是在堆abc内存当中.第二种方式在内存中只存在一种在常量池中.abc异常异常是在程序运行过程中,发生的多种不正常状况中引入异常,以异常类对这些不正常状况进行封装,通过异常处理机制对Java Exception程序运行时也许发生的多种问题进行处理顶层类,包括错误,Throwable errorException异常,异常分为运行时异常和编译时异常,,(处理方式申明抛出捕捉处理一定会被执行释放资源)throws try catch finally运行时异常,运行时也许会报错,可以不处理编译时异常,编译时无法编译通过,必须处理和throw throws:表达抛出异常类,由措施调用者使用;用在措施申明背面,跟的是异常类名;throws throws后可以跟多种异常类名,用逗号隔开throws用在措施体内,跟的是异常对象名;表达抛出异常,由措施体内的语句处理只能throw抛出一种异常对象名;异常注意事项子类抛出的异常比父类抛出的异常小假如父类抛出了多种异常,子类覆盖父类措施时,只能抛出相似的异常或者是他的子集父类措施没有抛出异常,子类覆盖父类该措施时也不可抛出异常此时子类产生该异常,只能捕捉处理,不能申明抛出泛型(提前使用未知数据类型)什么是泛型泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一种参数这种参数类型可以用在类、接口和措施的创立中,分别称为泛型类、泛型接口、泛型措施泛型替代了来代表任意类型,在编译时会擦除Object泛型类定义类名后〈变量〉使用创立对象时确定类型泛型措施定义措施返回值前<变量>_使用调用措施时确定类型泛型接口定义接口名后〈变量〉使用、定义类时确定类型,、一直不确定类型,直到创立对象时确定类型12泛型长处提高程序的安全性,将运行期问题转移到了编译期,省去了类型强转的麻烦,优化了程序设计线程每个运行的程序都是一种进程,在一种进程中还可以有多种执行单元同步运行,这些执行单元均是程序执行的一条条执行途径,这些执行途径就是线程,假如但愿程序中实现多段程序代码同步运行,则需要多线程技术是由高速切换执行,使用的是抢cpu java占式调度模型.直接继承类重写措施,线程与线程执行目的分离方式,实现接口,1Thread run
2.runnable重写措施,相比较而言,防止了措施单继承的局限性,且可以用多种线程操作同run21一份共享数据,把线程和线程数据有效的分离开,也体现面向对象思想java此外,尚有线程池技术,提交任务,启动线程五种状态新建状态可运行状态措施启动,运行状态获得new,start cpu死亡状态:措施执行完,等待或阻塞状态run Exception,error wait-notify,调用的线程终止,时间到,阻塞措施如阻塞措施返回,等待同步锁join-jion sleep-io read--获得同步锁线程安全问题当多种线程共同操作一份数据时,当线程操作数据到二分之一时,线程抢走,12CPU会导致使用的数据已经被其他数据修改为不想要的数据了”11中使用关键字来处理,将一种完整动作使用包裹即线Java synchronizedsynchronized程中操作数据的代码与线程中操作数据的代码均使用包裹,并使用相似A Bsynchronized,的锁对象这时线程会等待线程中包裹的代码执行完毕后再执行此B Asynchronized,时线程已经操作完了代码反之线程也会等待线程A ABo线程执行目的类组员位置定义多种线程要共享的同一份数据线程执行目的类组员位置定义多种线程要共享的同一把锁对象锁可以是任意类型的对象,只要多种线程使用同一把锁就可以使多种线程操作相似数据时同步死锁两个线程在运行时都在等待对方的锁,导致了程序的停滞,称为死锁基本数据类型包装类基本类型是内置的数据类型,为了使基本数据类型代表的数据使用起来更以便,统一面向对象的思想,设计了基本类型包装类,即每一种基本类型都对应一种引用类型的包装Java数据类型除去整型与字符型,其他基本数据类型将首字母大写即为包装数据类型自动装箱拆箱之后jdkl.5装箱就是把基础类型封装成一种类例如把封装成这时你就不能把他当成一种int Integer,数了,而是一种类了,对他的操作就需要用它的措施了拆箱就是把类转换成基础类型例如你算个加法什么的是不能用类的,就得把它转换成基本类型迭代器使用迭代器完毕集合遍历的过程是反复获得集合中元素的过程,一般我们将这个反复获取的过程叫做迭代增强循环底层也是通过迭代器实现的for迭代过程中不能对集合元素进行增删动作,否则会发生并发修改异常(运行时)递归递归就是在一种措施内可以再次调用自身递归调用必须要在某个条件下结束,否则就是死递归递归调用的层次不能太多,否则会堆栈溢出构造措施不能递归调用四种访问权限类访问级别Private:默认包访问级别:子类访问级别Protected:公共访问级别Public10:是和是中实现程序与设备之间数据交互动作的途径,中将这种10output input,Java java数据传播抽象为流字节流顶层父类outputstream,inputstream,,bufferedoutputstream,bufferedinputstream字符流顶层父类Writer,reader,,BufferedWriter,Buffered Reader转换流OutputStreamWriterJnputStreamReader字节流和字符流区别字节流以字节为单位传播数据,传播的是数据,因此可以处理任何数据,字符流是0101为了以便处理文本数据,通过字符码表实现字符与二进制数的转换常见的字符码表(兼容并提供更多中文),ASCII,Unicode,UTF-8,GBK GB2312GB2312匿名内部类匿名内部类是创立某个类型子类对象的快捷方式匿名内部类有两个环节临时定义一种类型的子类定义后即刻创立刚刚定义的这个类的对象匿名内部类就是没有名字的内部类,是内部类的简化形式一般只使用一次的时候使用匿名内部类,匿名内部类本质上是一种匿名子类对象匿名内部类的使用前提内部类继承一种类或实现接口匿名内部类包括两个环节创立一种类或者接口的子类,即刻创立该子类的对象简化书写网络通信协议在计算机网络中进行连接和通信的规则对数据的传播格式,传播速率,传播环节等有统一的规定,通信双方需要同步遵守才能完毕数据互换地址网络通信中计算机设备的唯一标识IP端口用于标识计算机设备中接受数据的网络应用程序详细是哪一种,有效端口0-65535,为系统端口及保留端口〜1024与TCP UDP::面向无连接,是不可靠协议,不能保证数据完整性,不安全每个数据报限制在UDP64k以内,发送数据较少,速度快,视频面向连接的通信协议,通过三次握手建立连接通路,是可靠协议,保证数据安全,TCP可进行大量的数据传播,速度慢,效率较低和模型OSI TCP/IP:应用层,表达层,会话层,传播层,网络层,数据链路层,物理层OSI应用层传播层,网际层,主机至网络层TCP/IP网络编程在上的主机一般运行了多种服务软件,同步提供几种服务每种服务都打开一种Internet,并绑定到一种端口上,不一样的端口对应于不一样的服务Socket就是为网络编程提供的一种机制,又叫套接字编程特点Socket网络编程三要素(网络通信中计算机设备的唯一标识),端口(用于表达计算机中接IP,受网络数据的应用程序是哪一种),通信协议(客户端和服务器之间连接和通信的规则一般使用三次握手建立连接)TCP/IP,通信的两端均有Socket0网络通信其实就是间的通信Socket数据在两个间通过传播Socket10编程一般使用与两种协议,我们重要使用协议通过三次握手Socket TCPUDP TCP:TCP协议将客户端与服务器端连接,两端使用各自的对象对象中包括了流,Socket SocketI供数据传播数据库数据库就是存储数据的仓库,其本质是一种文献系统,数据按照特定的格式将数据存储
1.起来,顾客可以对数据库中的数据进行增长,修改,删除及查询操作例如MySQL,Oracle,等等SQLServer,DB
2.数据库是真正存储数据的地方2数据库中以表为组织单位存储数据,类似于中的类java根据表字段锁规定的数据类型,可以向其中添加数据,表中的每条数据类似于对象语句是用于我们和数据库进行交互的命令,完毕增删改查等等SQL数据定义语言用来定义数据库对象数据库,表,列等,例如创立、删除、修改DDL,数据库、表构造等;数据操作语言用来对数据库中表的记录进行更新,例如增、DML,删、改表记录;数据控制语言用来定义数据库的访问权限和安全级别,及创立顾客;DCL,数据查询语言简称用来查询数据库中表的记录DQL,详细命令查文档用于完毕在代码中操作数据库作用连接数据库;向数据库发送语句;JDBC JavaSQL操作语句的返回成果SQL连接数据库过程JDBC导入的驱动程序包mysql jar通过注册驱动DriverManager通过获取连接对象DriverManager Connection通过获取一种可以向数据库发送语句的对象Connection sqlStatement通过对象执行语句得到一种成果集遍历成果集,Statement sqlselect ResultSetResultSet得到数据表中的数据释放资源长处JDBC语言和结合起来使程序员不必为不一样的平台编写不一样的应用程序,只须写Java JDBC一遍程序就可以让它在田可平台上运行接口和抽象类抽象类即不能创立实例的类,仅用来描述一种类型应当具有的基本特性与功能抽象措施即只有功能申明,没有功能主体实现的措施包括抽象措施的类一定是抽象类接口是功能的集合,是比抽象类更为抽象的类,同样是一种数据类型,定义的是一种规则必须实现抽象类或接口的所有抽象措施才可以实例化区别组员特点1构造措施接口没有构造措施;抽象类有构造措施组员变量接口中只有常量;抽象类中可以是常量,也可以是变量组员措施接口中只有抽象措施;抽象类中既有抽象措施,也有非抽象措施关系特点2类与类类与类之间只有单继承,可以有多层继承类与接口类与接口之间是实现关系,可以单实现,也可以多实现接口与接口接口与接口之间是继承关系,可以单继承,也可以多继承抽象类被继承体现的是所属关系关系,抽象类中定义的是继承体系中的共性功能;接is a口被实现体现的是关系,接口中定义的是继承体系中的扩展功能like a接口特点支持继承一种类同步实现多种接口Java接口可以继承接口类可以在继承一种类的同步,实现多种接口接口与父类的功能可以反复,均代表要具有某种功能接口中的组员是固定的变量修饰符为(明天讲解)public staticfinal static-^final,措施修饰符为因此重写接口措施时必须使用)public abstractpublic措施重写与措施重载所谓措施重载是指在一种类中,多种措施的措施名相似,不过参数列表不一样参数列表不一样指的是参数个数、参数类型或者参数的次序不一样构造措施就是重载形式存在的重载注意事项措施名相似,参数列表不一样(参数个数、参数类型或者参数的次序不一样),与返回值无关当子类继承父类后,拥有了父类非私有的措施并可以直接调用假如认为父类提供的措施不够强大,子类可以按照子类自身的逻辑重新定义继承过来的父类措施,这个重新定义一种措施的过程叫做措施重写重写的成果是子类的措施便将父类的措施覆盖一般状况下,继承就是为了措施重写,不重写子类和父类同样就没故意义了中措施重写规则Java访问权限相似或子类措施权限更大措施名称和参数列表必须相似返回值为基本类型时必须相似返回值为引用类型时相似或子类小构造措施的特点构造措施的注意事项?构造措施的特点.措施名与类名相似.没有返回值类型,连都没有12void构造措施注意事项与哪些关键字不能共存为何
4.abstract私有的措施是不可见的,无法被重写private::被修饰的措施是最终措施,无法被重写final final:被修饰的措施,要随类加载到措施区,由于抽象措施没有措施体因此static static不能加载的特点
5.static伴随类的加载而加载;优先于对象存在;1被所有对象所共享;可以直接被类名所调用静态措施只能访问静态,非静态措施既可以访问静态也可访问非静态2静态措施中不可以定义、关键字,由于静态优先于对象存在,和3this superthis所代表的对象还不存在super类与类、类与接口、接口与接口的关系
6.继承单继承,多层继承,,实现多实现,继承多继承object、的区别
7.final finally,finalize:可以修饰类、措施和变量,被修饰的类无法被继承,措施无法被重final final写,变量为常量只能赋值一次异常处理,和、结合使用,可以添加也可以不添加,用于执行某finally:trycatch些必须执行的代码,如释放资源等类中的措施,其中定义了对象要被垃圾搜集器回收之前要做的有finalize:Object关的清理工作.什么是多态,多态的好处和弊端8多态可以理解为事物存在的多种体现形态父类的引用指向了自己的子类对象;父类的引用也可以接受自己子类的对象提高了程序的可维护性和扩展性假如我们没有给出构造措施,系统将自动提供一种无参构造措施假如我们给出了构造措施,系统将不再提供默认的无参构造措施注意这个时候,假如我们还想使用无参数构造措施,就必须自己给出提议永远自己给出无参数构造措施This和superthis:访问本类对象组员变量调用本类一般措施本类构造措施调用本类其他构造super:访问本类对象当中的父类组员变量调用本类对象当中的父类一般措施本类构造措施调用父类构造注意:与在调用构造措施时,均必须在第一行,只能调用其中的一种this super栈内存堆内存对象内存图
3.For,while,do while:循环变量作用域for循环的循环变量其作用域仅限于循环体内,而while循环的循环变量作用域不局限在循环体内
2.循环条件for循环的循环条件为空是是死循环,而while循环的循环条件不能为空
3.dowhile无论条件与否满足,循环体至少执行一次Break,continue,return:break:
(1).结束目前整个循环,执行目前循环下边的语句忽视循环体中任何其他语句和循环条件测试
(2).只能跳出一层循环,假如你的循环是嵌套循环,那么你需要按照你嵌套的层次,逐渐使用break来跳出[逐层判断,逐渐跳出]⑶.break在循环体内,强行结束循环的执行,也就是结束整个循环过程,不再判断执行循环的条件与否成立,直接转向循环语句下面的语句
(4).当break出目前循环体中的switch语句体内时,其作用只是跳出该switch语句体总的来说就近原则,结束目前的整个循环
2.continue:终止本次循环的执行,即跳过目前这次循环中continue语句后尚未执行的语句,接着进行下一次循环条件的判断
3.return:结束措施,带参返回一种值给调用者类与对象的关系具有相似特性(属性)和行为(功能)的一类事物的抽象,体现的是现实事物的映射关系,对象是类的详细实例类的使用是创立对象,一种类可以有多种对象,可以说创立对象是类最重要的使用方式String,StringBuffer,StringBuilder:是不可变的字符序列,对象一经创立就不会发生变化了,即便是赋新值也不String String是在原对象的基础上变化,而是创立一种新的字符串对象,将引用指向这个新的对象,会导致空间的挥霍,效率较低只创立一种对象,是在同一种实例的基础之上StringBuffer追加,效率更高,当需要用到的时候就可以了String toString和的区别StringBuffer StringBuilder是同步的,因此线程安全,不过效率低,是不一样步的,因此线StringBuffer StringBuilder程不安全,不过效率高要比快单线程的程序使用StringBuilder StringBuffer StringBuilder比很好,多线程的状况下可以自己加锁,也可以直接使用StringBuffer什么时候使用字符串缓冲区数据多,个数无所谓确定,类型无所谓确定,只要最终都转变成字符串,就用字符串缓冲区对于三者使用的总结效率StringBuilderStringBufferStringString中的对象是不可变的,也可以理解为常量,线程安全,效率低;和StringBuffer是可变的是同步的,因此线程安全,不过效率低,StringBuilder StringBufferStringBuilder是不一样步的,因此线程不安全,不过效率高)假如要操作少许的数据用1String)单线程操作字符串缓冲区下操作大量数据2StringBuilder)多线程操作字符串缓冲区下操作大量数据(多线程中一般不提议使用3StringBuffer最佳使用然后自己加同步)StringBuffer,StringBuilderPerson p=new Person();创立一种对象都在内存中做了什么事情?1先将硬盘上指定位置的Person,class文献加载进内存2执行main措施时,在栈内存中开辟了main措施的空间(压栈-进栈),然后在main措施的栈辨别配了一种变量po3在堆内存中开辟一种实体空间,分派了一种内存首地址值new4在该实体空间中进行属性的空间分派,并进行了默认初始化5对空间中的属性进行显示初始化6进行实体的构造代码块初始化7调用该实体对应的构造函数,进行构造函数初始化()8将首地址赋值给p-变量就引用了该实体(指向了该对象),是连接不一样数据库的类库它有三个关键功能JDBC Java连接数据库,向数据库发送语句,操作语句的返回成果SQL SQL语言和结合起来使程序员不必为不一样的平台编写不一样的应用程序,只须写Java JDBC一遍程序就可以让它在田可平台上运行,这也是语言编写一次,到处运行”的优Java势注入是通过巧妙的拼写语句,让语句中的条件永远成立,以到达欺骗数据库的效SQL SQL果,查询出不该查询到的内容通过预编译来防止注入问题sql的基本使用DBUtils的使用是相对固定的环节,是常规项目的基本操作DBUtils Java导入的包(我们提供的版本为)DBUtils Jarcommons-dbutils-
1.
6.jar通过注册驱动DriverManger通过获取连接对象DriverManager Connection通过的使用对应的完毕操作DBUtils QueryRunnerConnection SQL针对执行查询语句时,通过不一样的子类可以在查询数据后,直接将得ResultSetHandler到的数据封装为想要的数据类型将成果集第一行转成对象数组ArrayHandler常用Handler:将成果集中的每一行数据都转成一种对象数组,再将转成的多种ArrayListHandler对象数组寄存到中List将成果集第一行数据封装到一种对应的业务类实例中BeanHandler将成果集中的每一行数据都封装到一种对应的业务类实例中,BeanListHandler再将多种业务类实例对象寄存到里List将成果集中的第一行数据封装到一种叩中,是列名,是对应的值M keyvalue将成果集中的每一行数据都封装到一种里,然后再将多种Map寄存到Map ListMapHandler将成果集中某一列的数据寄存到中ColumnListHandler List如对象连接对象,〃,QueryRunner,query select*from aaanew,zMapListHandler ColumnListHandlerCname进行单值查询,如ScalarHandler selectcount*from将成果集中的每一行数据都封装为一种再将KeyedHandler MapListMap,这些再存到一种里,其为指定的列,Map Map key KeyedHandler假如没有指定则使用第一种查询的字段如对象QueryRunner,query连接对象,字段类“select id,name fromaaa,new KeyedHandlerv型》“name”;弊端父类的引用只能访问父类中有的组员而无法调用子类中特有的措施和的区别
10.wait sleep⑴所在的类不一样是类中的措施,是类中的措施wait Objectsleep Thread措施没有释放同步锁,而措施释放了同步锁,使得其他线程可以2sleep wait使用必须指定期间,可以指定也可以不指定期间3sleep wait和只能在同步措施或者同步代码块里面使用,而4wait,notify notifyAIIsleep可以在任何地方使用,必须捕捉异常而和不需要捕捉异常5sleep wait,notify notifyAII对匿名内部类的理解
16.匿名内部类就是没有名字的内部类,是内部类的简化形式一般只使用一次的时候使用匿名内部类,匿名内部类本质上是一种匿名子类对象匿名内部类的使用前提内部类继承一种类或实现接口匿名内部类包括两个环节创立一种类或者接口的子类,即刻创立该子类的对象简化书写体系
17.10字节流|-:文献字节流,用于文献的读写操作|-InputStream/OutputStream:加缓冲区的字节流,用于提高效率字符流BufferedlnputStream/BufferedOutputStream|一文献字符流,用于文本文献的读写操作|-Reader/Writer:加缓冲区的字符流,用于提高效率转换流BufferedReader/BufferedWrite是字节流和字符流之间的桥梁InputStreamReader/OutputStreamWriter:集合体系
18.:功能同类似,底层也是数组,线程是同步的,因此是安全的,效率较低,I-Vector ArrayList数据增长是的增长50%:兀素是无序的,兀素不容许反复,底层用到了I-Set Map底层表,存储的对象最佳复写和措施,|-HashSet:hash hashCode equals:底层自平衡的二叉树,存储的对象具有比较性,有两种措施自然排序、比较I-TreeSet器排序元素是有序的,元素容许反复,由于该集合体系都具有索引I-Collection|-List:底层数据构造是数组,查询速度快,增删操作较慢,线程不一样步|-ArrayList:底层数据构造是链表,查询效率较低,增删操作快,线程不一样步,数据增|-LinkedList:长是的增长保证元素不会反复100%数据是以键值对的形式存储的,有的元素存在映射关系就可以使用该集合,|--Map:容许有键或值,线程不一样步,键是唯一的|-HashMap:null卜-叩元素可排序TreeM类似不容许有键或值,线程同步,元素不容许反复|-HashTable:HashMap,null局部变量和组员变量区别
21.组员变量定义位置类中,整个类中均可以访问,一般用修饰private内存组员变量伴随对象的建立而建立,存在于对象所在的堆内存中默认值组员变量有默认值回收伴随对象的回收而回收局部变量定义位置定义在局部范围,如措施内,语句内等内存局部变量存在于栈内存中默认值没有默认值回收伴随作用域结束而回收,一般为语句或措施范围同步函数与同步代码块的区别
22.同步代码块使用的锁可以是任意对象同步函数使用的锁是,静态同步函数的锁是该类的字节码文献对象在一种类中只有this一种同步的话,可以使用同步函数假如有多同步,必须使用同步代码块,来确定不一样的锁因此同步代码块相对灵活某些数组和集合的区别
23.容器长度集合长度可变,数组长度固定存储内容类型集合存储引用数据类型,数组存储任意类型与否可存储不一样类型数据数组只能存储同种数据类型的元素,集合可以存储不一样类型(键值)的元素有序可反复数组是有序可反复的集合中有些是有序可反复的如有些是无序不可反复的如叩list,set,m的区别
24.String Bufferfn StringBuilder是同步的,因此线程安全,不过效率低,是不一样步的,因此线StringBufferStringBuilder程不安全,不过效率高要比快单线程的程序使用StringBuilder StringBufferStringBuilder比很好,多线程的状况下可以自己加锁,也可以直接使用StringBuffer和区另(]
25.String StringBuffer对象一经创立就不会发生变化了,即便是赋新值也不是在原对象的基础上变化,而String是创立一种新的字符串对象,将引用指向这个新的对象,会导致空间的挥霍,效率较低只创立一种对象,是在同一种实例的基础之上追加,效率更高,当需要用到StringBuffer的时候就可以了String toString第二部分知识点.阐明中与的区别26Java String str=null String str=表达申明了一种对象的引用不过没有为其分派内存空间String str=null Stringstr,表达创立了一种长度等于的空字符串,并在内存中为其分派了内存空间Stringstr=0在内存中有两个对象,.堆内存有一种Stringstr=new Stringtw;str1new Sting.常量池中有一种字符串
2.使用运算符”==和措施进行比较对象的区别?27equals使用==算符比较基本数据类型时,比较的是值相等;使用==算符比较对象时,比较的是内存地址值使用措施比较对象时,比较的是对象的内容,与地址无关,假如没有重写equals equals措施就直接调用的是的措施Object equals.接口和抽象类有何区别?28组员特点1构造措施接口没有构造措施;抽象类有构造措施组员变量接口中只有常量;抽象类中可以是常量,也可以是变量组员措施接口中只有抽象措施;抽象类中既有抽象措施,也有非抽象措施关系特点2类与类类与类之间只有单继承,可以有多层继承类与接口类与接口之间是实现关系,可以单实现,也可以多实现接口与接口接口与接口之间是继承关系,可以单继承,也可以多继承设计理念3接口对应的设计模式是简朴工厂设计模式,抽象类对象的设计模式是模板设计模式必须实现抽象类或接口的所有抽象措施才可以实例化5黑马程序员入学面试题,不借用第三方变量互换两个变量
32.An=n m;〃m=im;2m人m一种数异或另一种数两次,还是得本来那个数n=nAm//nAnAm老式和增强有什么区别呢?
33.for for增强对集合进行遍历,集合不能为空只能获取集合元素,不过不能对集合进行操
1.for作增强有一种局限性,必须要有被遍历的目的for迭代器除了遍历,还可以进行集合中元素的动作
2.remove假如是用还可以在遍历过程中进行增删改查的动作Listiterator,提议在遍历数组的时候,还是但愿是用老式由于老式可以定义角标for for.增强循环和遍历的效果是同样的,也就说增强循环的内部也就是调用1for iteratorfor实现的,不过增强循环有些缺陷,例如不能在增强循环里动态的删除集合内iteratoer for容不能获取下标等由于使用数组实现,因此下标明确,最佳使用一般循环
2.ArrayList和的区别是什么?
34.Collection Colections是一种单列集合的顶层接口,它是、、等接口的父接口在这个Collection ListSet Queue接口中,定义了集合类中通用的措施是针对集合操作的工具类,有对集合进行排序和二分查找等静态措施Collections线程的状态
37.线程的五种状态新建用语句创立的线程对处在新建状态,此时它和其他对象同样,仅仅1new newJava在中被分派了内存当一种线程处在新建状态时,它仅仅是一种空的线程对象,系Heap统不为它分派资源Thread t=new ThreadnewRunner;就绪程序通过线程对象调用启动措施后,系统会为这个线程分派它2Runnable start运行时所需的除处理器之外的所有系统资源这时,它处在随时可以运行的状态,在随即的任意时刻,只要它获得处理器即会进入运行状态t.start运行处在这个状态的线程占用,执行程序代码在并发环境中,假如计3Running CPU算机只有一种那么任何时刻只会有一种线程处在这个状态假如计算机中有多种CPU,那么同一时刻可以让几种线程占用不一样的使它们都处在运行状态,只有处在CPU,CPU,就绪状态的线程才有机会转到运行状态阻塞阻塞状态是指线程由于某些原因放弃,临时停止运行当线程处在4Blocked CPU阻塞状态时,虚拟机不会给线程分派,直到线程重新进入就绪状态,它才有机会Java CPU转到运行状态阻塞状态可分为如下种3位于对象等待池中的阻塞状态当线程处在运行状态时,假Blocked inobjects waitpool:如执行了某个对象的措施,虚拟机就会把线程放到这个对象的等待池中wait Java位于对象锁池中的阻塞状态当线程处在运行状态,试图获得Blocked inobjects lockpool:某个对象的同步锁时,假如该对象的同步锁已经被其他线程占用,虚拟机就会把这个Java线程放到这个对象的锁池中其他阻塞状态目前线程执行了措施,或者调用了其他线程的Otherwise Blocked:sleep措施,或者发出了祈求时,就会进入这个状态当一种线程执行或者措施join I/O时是,就会发出一种祈求,该线程放弃,进入阻塞状态,直到处理完毕,该I/CPU I/线程才会恢复执行死亡当线程退出措施时,就进入死亡状态,该线程结束生命周期线程有5Dead run也许是正常执行完措施而退出,也有也许是碰到异常而退出不管线程是正常结束run还是异常结束,都不会对其他线程导致影响集合
40.集合名称阅读技巧出现的集合框架中常用的子类对象JDK
1.2前缀名是构造名,后缀名是体系名,数组构造,看到就懂得查询速度快,看到就懂得可以又反复元素可ArrayList:Array List以增删改查:链表构造,增删快LinkedList哈希构造,查询速度更快,不保证有序,不可以反复,必须覆盖和HashSet:hashCodeequals措施:链表加哈希构造,可以实既有序LinkedHashSet二叉树构造,可以排序有两种措施.自然排序.比较器TreeSet:1compable,2comparator提供了只包括一种措施的接口这个措施可以个给两个对Java compareToComparable象排序详细来说,它返回负数,正数来表明输入对象不不小于,等于,不小于已经存0,在的对象提供了包括和两个措施的接口措施用Java compareequals Comparatorcompare来给两个输入参数排序,返回负数,,正数表明第一种参数是不不小于,等于,不小于第0二个参数措施需要一种对象作为参数,它用来决定输入参数与否和equals comparator相等只有当输入参数也是一种并且和目前的排序成果是相似的comparator comparator时候,这个措施才返回true.和都是使用数组方式存储数据,此数组元素数不小于实际存储的数据以便ArrayList Vector增长和插入元素,容许直接按序号索引元素.不过插入元素要波及数组元素移动等内存操作,因此索引数据快而插入数据慢,由于使用了措施(线程安全),一般性能上较差,Vector synchronizedArrayList Vector属于遗留容器,目前已经不推荐使用,使用双向链表实现存储(将内存中零碎的内存单元通过附加的引用关联起来,LinkedList形成一种可以按序号索引的线性构造,这种链式存储方式与数组的持续存储方式相比,其实对内存的运用率更高),按序号索引数据需要进行前向或后向遍历,不过插入数据时只需要记录本项的前后项即可,因此插入速度较快由于和都是非线程安全的,假如需要多种线程操作同一种容器,ArrayList LinkedListed可以通过工具类中的措施将其转换成线程安全的容器后再使Collections synchronizedList用(这其实是装潢模式最佳的例子,将已经有对象传入另一种类的构造器中创立新的对象来增长新功能)叩集合M()此映射所维护的键的类型映射值的类型Mapk,v k:v:。
个人认证
优秀文档
获得点赞 0