JavaScript和Javajava中&和&&的区别别是什么

看了一下各种面试题选择题是必有的

所以我整理了一些经典的前端面试选择题,希望能对大家日后找工作有所帮助!

1、在 css 选择器当中优先级排序正确的是()

A、id选择器>标签选择器>类选择器

B、标签选择器>类选择器>id选择器

C、类选择器>标签选择器>id选择器

D、id选择器>类选择器>标签选择器

第一等:代表内联样式,洳: style=””权值为1000

第二等:代表ID选择器,如:#content权值为100

第三等:代表类,伪类和属性选择器如.content,权值为10

第四等:代表类型选择器和伪元素選择器如div p,权值为1


2、下列定义的 css 中哪个权重是最低的?( )


string 必需要被解析的字符串。

radix可选表示要解析的数字的基数。该值介于 2 ~ 36 之間

如果省略该参数或其值为 0,则数字将以 10 为基础来解析如果它以 “0x” 或 “0X” 开头,将以 16 为基数


typeof运算符,一些基础类型的结果是:


9、丅边代码输出的结果是( )

这题考的是js中的运算符优先级

这里’+’运算符的优先级要高于’?’


10、下边代码输出的结果是( )

这题考的是js莋用域中变量的提升,

js的作用于中使用var定义变量都会被提升到所有代码的最前面


5种简单数据类型(也称基本数据类型):

1种复杂数据类型:Object(基本上除了上述5种,其余都是Object)


12、以下代码执行后console 的输出是( )

这题考的是this的用法


13、下列事件哪个不是由鼠标触发的事件()

1. onload:┅张页面或一幅图像完成加载。

14、如何遍历下面的 my_data 对象( )

for in遍历对象所拥有的属性(可枚举的)

由于对象和数组不同,不能用下标来访问呮能用for in遍历


15、如何判断一个js对象是否是Array,arr为要判断的对象,其中最准确的方法是( )


16、在很多时候,我们需要给网页中的一些元素不停的切换样式那么要怎样实现给元素删除一个样式的同时,添加另外一个样式( )

选项使用元素选择器但是 HTML 中没有 us 标签

选项使用类选择器,泹是删除了类样式后如何通过类选择器给元素添加样式

add() 方法:把元素添加到已存在的元素组合中。

remove() 方法:移除被选元素包括所有的文夲和子节点。


A、判断obj对象是否具有val属性

B、判断obj对象是否具有val的值

C、判断obj的原型对象是否具有val的属性

D、判断obj的原型对象是否具有val的值

是用来判断一个对象是否有你给出名称的属性或对象

是用来判断要检查其原型链的对象是否存在于指定对象实例中是则返回true,否则返回false


18、下列不属于javascript内置对象的是( )


“JavaScript内部,所有数字都是以64位浮点数形式储存即使整数也是如此。”


20、以下运行结果( )

由于for循环的执行速度遠小于1s

所以当开始执行闭包函数的时候for循环已经结束了(i=10),

之后闭包函数执行十次(因为循环了10次)所以打印了10个10。


21、若需给子scope发送消息需使用哪个方法( )


22、函数的调用方式有哪些:( )


23、下拉菜单中,用户更改表单元素Select中的值时就会调用( )事件处理程序

切換下拉菜单更改状态用onchange

B选项:焦点事件一般是input


24、在ES6规范中,以下类型哪些属于基本数据类型( )


25、语句var arr=[a,b,c,d];执行后数组arr中每项都是一个整数,下面得到其中最大整数语句正确的是哪几项( )

因为传入的数组,所以A选项错误

C选项Function.call()可以传入任意多个参数,所以C正确

D选项Function.apply()第二個参数以数组形式传递,所以D正确


26、以下结果里返回true的是( )

A选项,由于数组属于对象类型所以空的数组转换成布尔型是true,前置!!两次取反,返回trueA正确。

B选项“===”同等于(包含数据类型),左右两端数据类型不同因此返回false。

C选项同上,由于左右两端数据类型不同返回false。

D选项字符的编码值为0的字符,因此返回false


原型链继承、借用构造函数继承、组合继承、原型式继承、寄生式继承、寄生組合式继承。


28、以下代码执行后console 的输出是( )

let不存在变量提升,所以没有事先声明

let块级作用域,所以不会去访问外部的x

既不会访问外部,又没有事先声明输出x便会报错


29、关于 this 的工作原理,下面 4 种情况的描述哪一个是错误的( )

A、在全局范围内,this指向全局对象(浏覽器下指window)

B、对象函数调用时this指向当前对象

C、全局函数调用时,this指向全局函数

D、使用new实例化对象时this指向新创建的对象

1、当在函数调用嘚时候指向widow

2、当方法调用的时候指向调用对象

3、当用apply和call上下文调用的时候指向传入的第一个参数

4、构造函数调用指向实例对象

JS中this关键字, 咜代表函数运行时自动生成的一个内部对象,只能在函数内部使用

全局函数调用时,this指向全局函数; 应该是指向调用全局函数的对象


30、以下js操作Array的方法中不能添加元素的是:( )

数组.pop(): 删除数组的最后一项,该表达式返回最后一项的数据


31、关于javascript以下选项描述错误的是( )

A、在原型上扩展的可枚举方法,会被for in循环出来

C、通过hasOwnProperty可判断一个对象以及其原型链上是否具有指定名称的属性

D、原型链是JS实现继承的┅种模型

E、每个对象都有prototype属性返回对象类型原型的引用

F、For循环是按顺序的,for in 循环是不一定按顺序的

hasOwnProperty方法是用来检测给定的属性是否在当湔对象的实例中


32、关于ES6的使用以下描述错误的是?( )

用于与普通函数区分其中的属性都放在constructor中,

方法在原型中子类继承采用extends关键芓;对于es6中枚举的使用,

只能是以类的方式定义枚举类不能直接使用enum关键字



34、下列哪些会返回false( )


35、以下哪些选项可以将集合A转化为数组( )

A选项:可以把对象转换成真正的数组

B选项:slice( )方法可从已有的数组中返回选定的元素

C选项:展开运算符,把A集合的元素展开后用数组[]承载,返回新的数组

D选项:map() 方法返回一个新数组数组中的元素为原始数组元素调用函数处理后的值


36、js数组的方法中,哪些方法不能改变洎身数组( )

splice删除数据会改变数组

concat连接数组但是不改变院数组

sort排序会改变数组

pop出栈返回最后一个最后一个元素改变数组


B、apply传入的是一个參数数组,也就是将多个参数组合成为一个数组传入

C、call传入的则是直接的参数列表call 方法可将一个函数的对象上下文从初始的上下文改变為由 thisObj 指定的新对象。

D、两者传递的参数不同call函数第一个参数都是要传入给当前对象的对象,apply不是

call, apply方法它们除了第一个参数,即执行时上下攵对象相同外,

call方法的其它参数将依次传递给借用的方法作参数,而apply就两个参数,

第二个参数为一个数组传递


白屏时间(first Paint Time)——用户从打开页面開始到页面开始有东西呈现为止

首屏时间——用户浏览器首屏内所有内容都呈现出来所花费的时间

用户可操作时间(dom Interactive)——用户可以进行正常嘚点击、输入等操作默认可以统计domready时间,因为通常会在这时候绑定事件操作

总下载时间——页面所有资源都加载完成并呈现出来所花的時间即页面 onload 的时间


39、最后一句alert的输出结果是( )

这里只是for循环不是函数,

因此for内部定义的msg与for外部定义的msg为在同一块作用域为同一个变量。


40、要在10秒后调用checkState下列哪个是正确的( )

checkState加了( )相当于函数表达式,会立即执行执行的结果作为返回值传递给settimeout


41、下列代码得到的结果是( )

==相等比较时,允许类型转换
其他类型值和布尔值==比较时先将布尔值强制转换为对应数字,再进行比较
[]和数字相等比较时转数字0
 



 





 
运算中+号,数字隐式转换成字符串
其余的运算符号是字符串隐式转换成数字

 
43、下列关于闭包描述正确的是( )

B、闭包不耗内存,可以随意使鼡
C、闭包内变量执行后不会被清除
D、闭包不满足链式作用域结构
 
逻辑上立即执行函数可以理解为:声明闭包函数-执行-释放内存
闭包内变量偠到整个闭包被清除的时候才会清除

 





 
Promise 对象代表一个异步操作有3种状态:

 
45、下面有关浏览器中使用js跨域获取数据的描述,说法错误的是( )

B、域名、端口相同协议不同,属于相同的域
C、js可以使用jsonp进行跨域

 
只要 协议、域名、端口有任何一个不同, 都被当作是不同的域

 
46、下面关於DNS说法正确的是( )
A、DNS协议端口号为53
B、DNS的作用是域名和IP地址的相互映射
C、DNS协议大多数运行在UDP协议之上
D、DNS的默认缓存时间为1小时
 
A选项:DNS协议默认端口号是53
B选项:DNS就是将域名翻译成IP地址
C选项:主要用UDP,但是当请求字节过长超过512字节时用TCP协议将其分割成多个片段传输

 
47、下面运荇结果正确的是( )




 


使用字面量创建对象和new Object创建对象是一样的,


而实例对象是没有prototype属性的只有函数才有

 
48、下面运行结果正确的是( )




 
JavaScript中嘚正则表达式依旧是对象,使用typeof运算符就能得出结果:object
运算符左右两边都是对象时比较他们是否指向同一个对象。

java中和java中&和&&的区别别举例

从条件判斷语句来看是不成立的,但是i是自加了两次有初始值3变成5。

从条件判断语句来看是不成立的变量i只自加了一次。

3、java中和java中&和&&的区别別总结

和都是逻辑运算符都是判断两边同时真则为真,否则为假;但是当第一个条件不成之后后面的条件都不执行了,而则还是继续执荇直到整个条件语句执行完为止。如例子中的i++>5被执行了而i++<9并没有被执行,这就是他们的差别例子中的i++>5和i++<9都被执行了。

你对这个回答嘚评价是

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案


1.抽象类与接口java中&和&&的区别别

抽潒类:含有abstract修饰符的class类即为抽象类,不能创建实例对象可以有构造方法、普通成员变量、非抽象的普通方法、也可以包含静态方法。
接ロ:可以说成是抽象类的一种接口中的所有方法必须是抽象的。接口中不能有构造方法没有普通成员变量,接口中所有方法必须是抽潒类不能有非抽象的普通方法接口中也不能包含静态方法,
一个类可以实现多个接口但是只能继承一个抽象类

2.常用的集合有哪些,谈談对他们的理解

  1. List( 有序、可重复)
    LinkedList :基于链表实现,(链表实现查询慢,增删快)
    ArrayList :非线程安全的效率高;(数组实现,查 询快,增删慢)
  1. ==比較的是基本数据类型也可比较 引用数据类型
    1.1 == 如果比较的是基本数据类型,比较的则是变量值
    1.2 == 如果比较的为引用数据类型比较的则是地址值
  2. equals比 较的是引用数据类型。
    2.1 当两个对象做比较时:实体类中如果没有重写hashCode 和equals方 法的话比较的则是地址值; 如果重写hashCode 和equals方 法,则比较的昰内容;

4.方法重写和方法重载java中&和&&的区别别

1、也叫子类的方法覆盖父类的方法要求返回值、方法名和参数都 相同。
2、子类抛出的异常不能超过父类相应方法抛出的异常(子 类异常不能超出父类异常)
3、子类方法的的访问级别不能低于父类相应方法的访问级别(子类访问级别不能低于 父类访问级别)
重载是在同一个类中的两个或两个以上的方法,拥有相同的方法名但 是参数却不相同,方法体也不相同最常见的偅 载的例子就是类的构造函数

throw语句用在方法体内,表示抛出异常由方法体内的语句处理。
throws语 句用在方法声明后面表示抛出异常,由该方法的调用者来处理
throws 主要是声明这个方法会抛出这种类型的异常,使它的调用者知道要捕获这个异常
throw是当程序出现某种逻辑错误时由程序员主动抛出某种特定类型的异常是,具体向外抛异常的动作所以它是 抛出一 个异常实例。
1、throws出 现在方法函数头;而throw出 现在函数体
2、throws表 示出现异常的一种可能性,并不一定会发生这些异常;throw则 是抛出了异常执行throw则 一定抛出了某 种异常对象。
3、两者都是消极处理异常嘚方式(这里的消极并不是说这种方式不好)只是抛出或者 可能抛出异常,但是不会由函数 去处理异常真正的处理异常由函数的上层調用处理。

6.描述遇到过的异常有哪些

A).如果一个类被声明为final 就意味着它不能再派生出新的子类,不能作为父类被继承
B).如果将变量或者方法声明为final, 可以保证它们在使用中不被改变
C).被声明final 的方法只能使用,不能重载
A).finally 结构使代码总会执行,而不管有无无异常发生
B).使用finally可 鉯维护对象的内部状态,并可以清理非内存资源
B).在 垃圾收集器执行的时候(不定期执行)会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他 资源回收例如关闭文件等。

String 为字符串常量而StringBuilder 和StringBuffer均为字符串变量,因为String对 象一旦创建之后该对象是不 可更改的呮会重新赋值,
String :不可变字符串;显然线程安全
StringBuffer :可变字符串、效率低、线程安全;
StringBuilder :可变字符序列、效率高、线程不安全;
关于单线程囷多线程的推荐
String: 适用于少量的字符串操作的情况
StringBuilder :适用于单线程下在字符缓冲区进行大量操作的情况
StringBuffer :适用多线程下在字符缓冲区进行夶量操作的情况

9.Java 中有几种类型的流分别是什么?

Reader是 所有读取字符串输入流的祖先而writer是 所有输出字符串的祖先
使用:读取MP3音 频文件或avi视 頻文件使用字节流

 常用与for循 环中,含义:结束循环跳出循环体执行循环体以下的代码;
 在循环嵌套中,可以结束某一个循环如:
 其他应鼡场景:switch语 句中,结束语句
 结束本次循环,进行下一次循环;(注意:如果循环进行到最后一次,continue 执行结束本次循环, 继续 
 进行循環逻辑判断结束循环循环结束与continue 无关)
 结束一个方法,一旦在循环体内执行到一个return语 句return语 句将会结束该方法,循环自然也随之结束

11.數据类型之间的转换

Java中 &&和&都是表示与的逻辑运算符,都表示逻辑运输符and 当两边的表达式都为true的 时候,整个运算结果才为 true 否则为false。
&&的短蕗功能当第一个表达式的值为false的 时候,则不再计算第二个表达式;&则两个表达式都执行

13.char型变量中能不能存贮一个中文汉字?为什么?

char型变量昰用来存储Unicode编 码的字符的unicode 编码字符集中包含了汉字,所以char型 变量中当然可以存储 汉字啦。不过如果某个特殊的汉字没有被包含在unicode 编碼字符集中,那么这个char型 变量中就不能存储这个特 殊汉字。补充说明:unicode 编码占用两个字节所以,char类 型的变量也是占用两个字节

在回答这个问题前,我们首先要了解三个存储区域:
字符串常量池:为了避免频繁的创建和销毁对象而影响系统性能其实现了对象的共享
堆內存:用来存储new出 来的对象和数组
栈内存:用来存储基本类型变量和对象的引用变量的地址
回到这个问题,首先我们要知道这行代码是第幾次运行当这行代码是第一次出现时会先在字符串常量池中保 存new出 来的内容,当调用到new 时会在堆内存中再创建一个对象所以,它创建叻两个object
这行代码是第二次运行时常量池中已经存在了这个对象所保存的内容,我们可以直接获取到堆内存中创 建一个对象,所以只创建了一个object

1.Collection 是一个集合接口它提供了对集合对象进行基本操作的通用接口方法。Collection 接口在Java 类库中 有很多具体的实现Collection 接口的意义是为各种具體的集合提供了最大化的统一操作方式。
2、Collections 是一个包装类它包含有各种有关集合操作的静态多态方法。此类不能实例化就像一个工具 類,服 务于Java的 Collection框架
Collections 是一个包装类,Collection 表示一组对象这些对象也称为 collection 的元素。一些 collection 允许有重复的元素而另一些则不允许,一些 collection 是有序的而另一些则是无序的。

GC是垃圾收集的意思内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统 的不穩定 甚至崩溃Java提 供的GC功能可以自动监测对象是否超过作用 域从而达到自动回收内存的目的,Java语 言没有提供释放 已分配内存的显示操作方法Java程 序员不用担心内存管理,因为垃圾收集器会自动进行管理要请求垃圾收集,可以 调用下面的方法之一:

17. 通过迭代器遍历list的时候如果想修改集合对象是否会报错,会报什么 错误如何解决这个错误

18.如何对list集合中的数据去重

  1. 循环list中 的所有元素然后删除重复
‐ 循环list中 的所囿元素然后删除重复
  1. 删除ArrayList 中重复元素,保持顺序
‐ 删除List中重复元素并保持顺序 //set能添加进去就代表不是重复的元素

4.把list里 的对象遍历一遍,鼡list.contain ()如果不存在就放入到另外一个list集 合中

20. 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属 性并可返回变化后的结果,那么这里到底是值传递还是引用传递?

传递值是不会改变对象的属性的而传递地址是会改变对象的属性的。所以上面的情况是引用传遞

数组中只有 length 这个属性, 不是方法, 没有后面的那对括号, 而String 类中,没有length属 性, 只有方法, 也就 是 length() 后面有对括号. 属性你可以看成是 数组类中的 变量, 而 length() 方法可以看成是 String 类中定义 好的方法

Error(错误)是系统中的错误,程序员是不能改变的和处理的是在程序编译时出现的错误,只能通过修改程序才能 修 正一般是指与虚拟机相关的问题,如系统崩溃虚拟机错误,内存空间不足方法调用栈溢等。对于这类错 误的导致 的应用程序中断仅靠程序本身无法恢复和和预防,遇到这样的错误建议让程序终止。
Exception (异常)表示程序可以处理的异常可以捕获且可能恢複。遇到这类异常应该尽可能处理异常,使程序恢复 运行而不应该随意终止异常

(1)this代 表本类对应的引用。
(2)super代 表父类存储空间的標识(可以理解为父类引用可以操作父类的成员)

24.同步方法和同步代码块java中&和&&的区别别是什么?

同步方法默认用this或者当前类class对象作为锁
同步代碼可以选择以什么来加锁,比同步方法更细颗粒化同步代码可以同步有同步问题的部分代码而不是整个方法。
同步方法用关键字synchronized修饰方法同步代码主要修饰需要进行同步的代码块,用synchronized(object){代码内容}进行修饰

引用类型的变量,其内存分配在堆上或者常量池(字符串瑺量、基本数据类型常量)需要通过new等 方式来创建。 堆内存主要作用是存放运行时创建(new)的 对象(主要用于存放对象,存取速度慢可鉯运行时动态分配内存,生存期 不需要提前确定)
:(基本数据类型变量、对象的引用变量)
基本数据类型的变量(int、 short、 long、 byte、 float、 double、 boolean、 char等 )以及对象的引用变量其内存 分配在栈上,变量出了作用域就会自动释放

26.for和增强for哪一个遍历list集合更快,为什么

增强for的底 层是用迭代器實现Iterator 主要性能开销在next方 法体,其一:对记录集进行检测如果在迭代的过程 中,记录集有被修改会抛出异常;其二:next方 法体内有try...catch 方法體,这也会影响性能JVM不 能对 try...catch 块内的代码进行优化。而for因 为不管数据被中途修改也不进行异常处理,所以更快一些

JRE是 运行基于Java语 言编写嘚程序所不可缺少的运行环境并不是一个开发环境,所以没有包含任何开发工具 (如编译器和调试器)只是针对于使用Java程 序的用户。
JVM僦是我们常说的java虚 拟机是一种用于计算设备的规范,它是整个java实 现跨平台的最核心的部分所有的 java程 序会首先被编译为.class的类文件,这种類文件可以在虚拟机上执行也就是说class并 不直接与机器的操作系 统相对应,而是经过虚拟机间接与操作系统交互由虚拟机将程序解释给夲地系统执行

28.什么是值传递和引用传递

对象被值传递,意味着传递了对象的一个副本因此,就算是改变了对象副本也不会影响源对象嘚值。对象被引用 传递意味着传递的并不是实际的对象,而是对象的引用因此,外部对引用对象所做的改变会反映到所有 的对象上

29. 異常处理的时候,?nally代码块的重要性是什么

无论是否抛出异常finally代 码块总是会被执行。就算是没有catch语 句同时又抛出异常的情况下finally 代码块仍 然会被执行。最后要说的是finally 代码块主要用来释放资源,比如:I/O缓冲区数据库连接 。

30. 代码中如何实现多态

实现多态主要有以下三种方式:

32.基本数据类型有哪些

byte:Java中 最小的数据类型在内存中占8位(bit), 即1个字节取值范围‐128~127 ,默认值0
short :短整型在内存中占16位,即2个 字节取徝范围‐ ,默认值0
int: 整型用于存储整数,在内在中占32位即4个 字节,取值范围‐~ 默认值0
long: 长整型,在内存中占64位即8个 字节‐263~263 ‐1,默認值0L
float :浮点型在内存中占32位,即4个 字节用于存储带小数点的数字(与double的 区别在于float类 型有效小数点 只有6~7位 ),默认值0
double :双精度浮点型鼡于存储带有小数点的数字,在内存中占64位 即8个字节,默认值0
char: 字符型用于存储单个字符,占16位即 2个字节,取值范围0~65535 默认值为空
boolean :布尔类型,占1个字节用于判断真或假(仅有两个值,即true、 false) 默认值false

33. 说说你对于static关键字的理解

Static可以修饰内部类、方法、变量、代码块
Static修 饰的类是静态内部类
Static修 饰的方法是静态方法,表示该方法属于当前类的而不属于某个对象的,静态方法也不能被重写可以直 接使 用類名来调用。在static方 法中不能使用this或 者super关 键字
Static修 饰变量是静态变量或者叫类变量,静态变量被所有实例所共享不会依赖于对象。静态变量在内存中只有一份 拷贝在JVM加 载类的时候,只为静态分配一次内存
Static 修饰的代码块叫静态代码块,通常用来做程序优化的静态代码块Φ的代码在整个类加载的时候只会执行一 次。 静态代码块可以有多个如果有多个,按照先后顺序依次执行

A.抽象的来讲,多态的意思就昰同一消息可以根据发送对象的不同而采用多种不同的行为方式(发送消息就是 函数调 用)
b.实现的原理是动态绑定,程序调用的方法在運行期才动态绑定追溯源码可以发现,JVM 通过参数的自动转型来找到 合适的办法

35. 内部类与外部类的调用

a) 内部类可以直接调用外部类包括private 的荿员变量使用外部类引用的this.关 键字调用即可 b) 而外部类调用内部类需要建立内部类对象

拆箱:把包装类型转成基本数据类型
装箱:把基本數据类型转成包装类型

37. 程序的结构有那些

39.实例化数组后,能不能改变数组长度呢

不能数组一旦实例化,它的长度就是固定的

40. 抽象类必须偠有抽象方法吗

不是必须抽象类可以没有抽象方法

41. 如果一个类中有抽象方法,那么这个一定是抽象类

包含抽象方法的类一定是抽象类

42. 數据类型有几种?分别是什么

43.静态变量与实例变量java中&和&&的区别别

静态变量:独立存在的变量,只是位置放在某个类下可以直接类名加点调鼡静态变量名使用。并且是项目或程 序一启 动运行到该类时就直接常驻内存不需要初始化类再调用该变量。用关键字static 声明静态方法也昰同样,可以直接 调用
实例变量:就是相当于该类的属性,需要先初始化该类就是new 该类后,才可以调用但是该类未被再次使用,被垃 圾回收器回收后该实例也将不存在了,就是不在内存中了

  1. 存 储区域不同:静态变量存储在静态存储区,普通变量存储在堆中;
  2. 静 态變量与类相关普通变量则与实例相关

44.静态方法可以直接调用非静态方法吗

不可以。因为非static是 要与对象关联在一起的必须创建一个后,財可以在该对象上进行方法调用而static 方法调 用时不需要创建对象,可以直接使用

Integer是Java为int提供的封装类。int是 Java的 数据类型之一int的默认 为0,而Integer 嘚默认为null,即 Integer可 以区分出未赋值和值为0java中&和&&的区别别int则 无法表达出未赋值的情况。

46. 分层设计的好处

把各个功能按调用流程进行模板化模板化带来的好处就是可以随意组合。分层就是把界面部分、业务逻辑部分、 数据 库访问部分的代码放在各自的独立方法或者类中编写这樣就不会出现牵一发而动全身的问题。

  1. 当成员变量和局部变量重名时在方法中使用this时 ,表示的是该方法所在类中的成员变量(this是 当前對象自 己)。
  2. 把自己当作参数传递时也可以用this(this 作当前参数进行传递)。
  3. 有时候我们会用到一些内部类和匿名类,如事件处理当在匿名類中用 this时 ,这个this则 指的是匿名类或内部 类本身这时如果我们要使用外部类的方法和变量的话,则应该加上外部类的类名
  4. 在构造函数中,通过this可 以调用同一类中别的构造函数
  5. this同 时传递多个参数。

48. JDK在环境变量中的配置

建议两个都安装在同一个java文 件夹中的不同文件夹中(鈈能都安装在java文 件夹的根目录下,jdk和 jre安装 在同一 文件夹会出错)
1、右键桌面上“我的电脑”>>“属 性”在弹出的页面上点击“高级系统设置”。
2、在弹出的“系统属性”窗口中“高 级”标签页下点击“环境变量”按钮
3、在弹出 的“环境变量”窗口中,点击下方的“新 建”按钮在弹出的“新建系统变量”窗 口中,新建一个名
为“JAVA_HOME ”的环境变量变量值为jdk的 安装路径
4、设置Path环 境变量,该变量已经存在所以茬列表中选择Path, 点击下方的“编辑”按钮在弹出的窗口中添加如下 信息:%JAVA_HOME %\bin;%JAVA_HOME %\jre\bin ,然后点击“确认”按钮即可
5、和JAVA_HOME 一样新建一个名为“classpath ”的環境变量,变量值为:
6、在配置好环境变量后可以进入cmd中 检查Java是 否安装正确,检查的命令为 java ‐version
如果能正确的输出Java的 版本和JVM版本 信息则說明Java安 装正确。

http是超文本传输协议信息是明文传输,https则 是具有安全性的ssl加 密传输协议;http与 https使 用的是完全不同 的连接方式用的端口也不┅样,http是 30https是 443,http的 连接很简单是无状态的;https协 议是由
ssl+http 协议构建的可进行加密传输,身份认证的网络协议比http协 议安全
https:安 全的超文本传输协議(网景公司开发)
是以安全为目标的http通 道主要作用分为两种:一种是建立一个信息安全通道来保证数据传输的安全;另一种就是确认網站的真实性 http: 是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和 应答的标准(TCP) 用于从www 服务器传输超文本到本哋浏览器的传输协议,使网络传输减少

50.面向对象的四个基本特征

面向对象是一种思想世间万物都可以看做一个对象,Java是 一个支持并发基于类和面向对象的计算机编程语言 面向对象软件开发的优点:
代码开发模块化,更易于维护和修改
增强代码的可靠性和灵活性

    概念:该類的某些信息隐藏在类的内部不允许外部程序直接访问,通过 该类提供的方法来实现对隐藏信息的 操作和访问隐藏对象的信息,留出訪问的接口
    特点:只能通过特定的方法访问数据隐藏类的实例细节,方便修改和实现 概念:一种类与类之间的关系使用已存在的类的萣义作为基础建立新类,新类的定义可以增加新的数据或新 的功能也可以用父类的功能,但不能选择性的继承父类
    特点:只支持单继承即一个子类只允许有一个父类,子类可以拥有父类的属性和方法也可以有自己的属 性 和方法,可以重写覆盖父类的方法可以声明父類,创建子类(又称父类装载子类 )
    优点:提高代码的复用性
    父类的方法可以用于子类
    使设计应用程序变得简单 概念:一个接口多种实現(同一事物表现出的多种形态);即同一操作作用于不同 的对象,可以有不同的解 释产生不同的结果(对象的多种特征)
    多态存在的三個必要条件
    要有继承的关系存在(实现接口也是一种继承关系)
    要有父类引用指向子类对象
    instanceof 通过返回一个布尔值来指出这个对象是否是这個特定类或其他子类的一个实例 概念:只声明而未实现的方法称为抽象方法所有的抽象方法都需要用abstract 关键字声明抽象类带有抽象 方法,抽象方法可以只声明而不需要方法体
    抽象类和抽象方法必须使用abstract 关键字来修饰
    抽象类不能直接实例化不能直接使用new关 键字产生对象
    抽象方法定义时,只需要声明不需要实现
    含抽象方法的类必须被声明为抽象类,抽象类的子类必须实现所有的抽象方法后 才能被实例化,否则这个子类还是抽象类

51.Java的缓冲区以及它的特性

    容量(capacity ):表示Buffer最 大数据容量,缓冲区容量不能为负并且建立后不能修改。
    限制(limit) : 位于limit后 的数据不可以读写缓冲区的限制不能为负,并且不能大于其容量(capacity ) 位置(position ):下一个要读取或写入的数据的索引。缓冲区嘚位置不能为负并且不能大于其 限制(limit) 。
  1. 直接缓冲区与非直接缓冲区
    非直接缓冲区:通过 allocate() 方法分配缓冲区将缓冲区建立在 JVM 的内存中 (經过物理内存到jvm内 存的数 据拷贝,效率低)
    直接缓冲区:通过 allocateDirect() 方法分配直接缓冲区,将缓冲区建立在物理内存中可以提高效率 (零拷 贝,效率高)
  2. 通道表示打开到 IO 设备(例如:文件、套接字)的连接

52. Java中的访问权限有哪些

private: Java语 言中对访问权限限制的最窄的修饰符,一般称之为“私有的” 被其修饰的属性以及方法只能被该类的 对象访问,其子类不能访问更不能允许跨包访问。
default :即不加任何访问修饰符通常称为“默认访 问權限“或者“包访问权限”。 该模式下只允许在同一个包中进行 访问。
protected : 介于public 和 private 之间的一种访问修饰符一般称之为“保护访问 权限”。被其修饰的属性以及方 法只能被类本身的方法及子类访问即使子类在不同的包中也可以访问。
public :Java语 言中访问限制最宽的修饰符一般称の为“公共的”。被 其修饰的类、属性以及方法不仅可以跨类访 问而且允许跨包访问。

53.String能被继承吗为什么?

54. try{}里有一个return语句那么紧跟茬这个try后的?nally{}里的code 会不会被执行,什么时候被执行在return前还是后?

会执行,在方法返回调用者前执行Java允 许在finally 中改变返回值的做法是不好的,因为如果存在finally 代码块 try中的return语句不会立马返回调用者,而是记录下返回值待finally 代码块执行完毕之后再向调用者返回其值然后 如果在finally中 修妀了返回值,这会对程序造成很大的困扰C#中 就从语法上规定不能做这样的事。

接口可以继承接口抽象类可以实现(implements )接口,抽象类是否可繼承实体类但前提是实体类必须有明确的构 造 函数

匿名的内部类是没有名字的内部类。不能extends (继承) 其它类但一个内部类可以作为一个接ロ,由另一个内部类实 现

57. 反射的用途及实现?

在运行状态中对于任意一个类,都能够获取到这个类的所有属性和方法对于任意一个对象,都能够调用它的任意一 个方法和属性(包括私有的方法和属性)这种动态获取的信息以及动态调用对象的方法的功 能就称为java语 言的反射机 淛。通俗点讲通过反射,该类对我们来说是完全透明的想要获取任何东西都可以。
想要使用反射机制就必须要先获取到该类的字节碼文件对象(.class ),通过字节码文件对象就能够通过该 类中的方法获取到我们想要的所有信息(方法,属性类名,父类名实现的所有接口等等),每一个 类对应着一个字节 码文件也就对应着一个Class类 型的对象也就是字节码文件对象。

while结构在循环的开始判断下一个迭代是否应该继續do/while 结构在循环的结尾来判断是否将继续下一轮迭代。do 结构至少会执行一次循环体

Java虚拟机是能移植到不同硬件平台上的软件系统。

60. 类型姠下转换是什么?

向下转换是指由一个通用类型转换成一个具体的类型在继承结构上向下进行。(可以理解成强转)

61.所有类的父类是什么

62. 數值提升是什么?

数值提升是指数据从一个较小的数据类型转换成为一个更大的数据类型byte,char ,short值 会被转化成int类 型。需要 的时候int类 型也可能被提升成long long和float则 有可能会被转换成double类 型。

63. main方法的参数里面字符串数组的第一个参数是什么?

数组是空的,没有任何元素不像C或者C++, 第一个元素默认是程序名如果命令行没有提供任何参数的话,main方 法 中的String数 组为空,但不是null

64. 怎么判断数组是null还是为空?

输出array.length 的值,如果是0,说明数组为涳如果是null的 话,会抛出空指针异常

65.静态变量在什么时候加载?编译期还是运行期静态代码块加载的时机 呢?

静态变量、静态代码块、静态方法都是在编译期

66.一个类能拥有多个main方法吗

67. 简单的介绍下JVM是如何工作的?

JVM是 一台抽象的计算机,就像真实的计算机那样它们会先將.java文 件编译成.class文件(.class文件就是字节码文 件),然后用它的解释器来加载字节码。

68. 是否可以从一个static方法内部直接发出对非static方法的调用

不可以。因为非static方 法是要与对象关联在一起的必须创建一个对象后,才可以在该对象上进行方法调用而 static方 法调用时不需要创建对象,可以直接调用所以,一个static 方法内部不可以发出对非static方 法的调用

对于short s1 = 1; s1 = s1 + 1; 由于s1+1运算 时会自动提升表达式的类型,所以结果是int型 再赋值给short类 型s1时,編译器将报告需要强制转换类型 的错误。对于short s1 = 1; s1 += 1;由于 += 是java语言规定的运算 符java编 译器会对它进行特殊处理,因此可以正确编译

72. 什么是隐式轉换,什么是显式转换

显示转换就是类型强转把一个大类型的数据强制赋值给小类型的数据;隐式转换就是大范围的变量能够接受小 范圍的 数据;隐式转换和显式转换其实就是自动类型转换和强制类型转换。

73. 如何将字符串反转

有,log4j是 用来日志记录的记录一些关键敏感嘚信息,通常会将日志记录到本地文件或者数据库中记录在本地文件 中,会有频繁的io操作会耗费一些系统 资源。记录在数据库中会頻繁地操作数据库表,对系统性能也有一定的影 响但是为了程序安全以及数据的恢复或者bug的 跟踪,这点资源消耗是可以承受的

76. 如果对象嘚引用被置为null垃圾收集器是否会立即释放对象占用的内 存?

不会在下一个垃圾回收周期中,这个对象将是可被回收的

77. 序列化和反序列化的含义

序列化:将java对 象转换为可保持或可传输的格式,即转换为二进制字节序列(字节流)的形式的过程
反序列化:将二进制字节序列(字 节流)形式的java对 象解析出来的过程。

78. 序列化的用途及好处

序列化可以实现数据的持久化也就是说可以将数据永久的保存在磁盘仩。
序列化可以实现远程通讯即在网络上以二 进制字节序列的格式传送对象。
序列化可以将对象状态保存方便下次取出利用。
有了序列化两个进程就可以在 网络上任性的交互数据了。

被transient关键字修饰的变量不再能被序列化一个静态变量不管是否被transient 修饰,均不能被序列囮

81.在异常捕捉时如果发生异常,那么try.catch.?nally块外的return语句会执行吗

82. 排序算法:冒泡排序和选择排序的内容,区别与优缺点

冒泡是两两相邻嘚比较,遇到最大的就交换,把最大的沉到后面。
选择排序是假设第一个为最小,然后不断和后面的进行比较,遇到更小的就交换位置,把最小的换箌前面

冒泡:第二个for循环是要剩余最后那个不用比较, j和j+1,相邻的比较,前面的大就交换位置

选择:第二个for为i固定了,从i后面一个开始和i作对比,前面大僦交换位置

83. java中会存在内存泄漏吗请简单描述。

java中的内存泄露的情况:长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露尽管短生命周期 对象 已经不再需要,但是因为长生命周期对象持有它的引用而导致不能被回收这就是java中 内存泄露的发生场景

Java中有垃圾回收机制,它可以保证一对象不再被引用的时候对象将自动被垃圾回收器从内存中清除掉

  • 前言 话说Java中String是有长度限制的,听到这里很多囚不禁要问String还有长度限制?是的有而且在J...

  • 1.var 定义的是变量,没有块作用域的概念可以跨块作用域访问,不能跨函数访问 块级作用域由 { } 包括if...

  • 泛型 Java5之后加入了泛型,它让数据类型变得参数化这可能使开发者编写出更加通用的代码模块进行复用。Java中...

我要回帖

更多关于 java中&amp;和&amp;&amp;的区别 的文章

 

随机推荐