java技术知识简介
1.&和&&的区别?
&:逻辑与(and),运算符两边的表达式均为true时,整个结果才为true。
&&:短路与,如果第一个表达式为false时,第二个表达式就不会计算了。
2.在java中如何跳出当前的多重循环?
在循环语句外前面定义一个标号,然后在里层循环体的代码中使用带有标号的break语句,即可跳出循环。
比如:
ok: for (int i = 0; i < 10; i++) { { for (int j = 0; j < 10; j++) { break ok; } } } |
3.最有效率的方法算出2X8等于几?
使用位运算,效率最高:2<<3,表示2向左移动了3位,就相当于2乘以2的3次方,结果:16。
4.”==”和equals方法究竟有什么区别?
==:表示两个变量的值是否相等,比较两个基本数据类型的数据或者引用变量,用==。
equals:用于比较两个独立对象的内容是否相同。字符串的比较也用equals。
5. Int和integer的区别?
Int是Java的8中基本数据类型之一,integer是int的封装类。Int类型的默认值为0,integer默认值为null,所以区别在于,integer能区分出null值和0的区别。
6.三个与取整有关的方法:
Math.ceil():表示向上取整;Math.ceil(11.3)=12;Math.ceil(-11.3)=-12。
Math.floor():表示向下取整;Math.floor(11.6)=11;Math.floor(-11.6)=-12。
Math.round():表示四舍五入;Math.round(11.5)=12;Math.round(-11.5)=-11;
Math.round(11.3)=11;Math.round(-11.3)=-11;
7.重载和重写的区别?
重载(Overload):函数名相同,参数不同。可以改变返回值类型,参数的个数和类型。
重写(Override):和父类的的方法名称、参数完全相同。
8.面向对象的特征?
封装:将对象属性和方法的代码封装到一个模块中,也就是一个类中,保证软件内部具有优良的模块性的基础,实现“高内聚,低耦合”。
抽象:找出一些事物的相似和共性之处,然后归为一个类,该类只考虑事物的相似和共性之处。抽象包括行为抽象和状态抽象。
继承:在已经存在的类的基础上进行,将其定义的内容作为自己的内容,并可以加入新的内容或者修改原来的方法适合特殊的需要。
多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,就是多态,简单点说:就是用父类的引用指向子类的对象。目的:提高代码复用性,解决项目中紧耦合问题,提高可扩展性。
多态的机制:靠的是父类的或者接口的引用变量可以指向子类或者具体实现类的实例对象。
9.String和StringBuffuer、StringBuilder的区别?
String:字符串数值不可变;
StringBuffer:字符串可修改,可以动态构造字符数据。StringBuffer类是可以通过Append()来修改值。线程安全。
StringBuilder:线程不安全。
三者在执行速度方面的比较:StringBuilder > StringBuffer > String
对于三者使用的总结:
1.如果要操作少量的数据用 = String
2.单线程操作字符串缓冲区下操作大量数据 = StringBuilder
3.多线程操作字符串缓冲区下操作大量数据 = StringBuffer
10.java中有几种方法实现一个线程?用什么关键字修饰同步方法?stop()和suspend()方法为何不推荐使用?
第一种:继承Thread类。New Thread(){}.start():表示调用子类对象的run方法。
第二种:实现Runable接口。
第三种:线程池创建多线程。
第四种:实现Callable接口,重写call函数(
继承Thread类实现多线程,重写run方法时没有返回值也不能抛出异常,使用Callable接口就可以解决这个问题。
Callable接口和Runnable接口的不同之处:
1.Callable规定的方法是call,而Runnable是run
2.call方法可以抛出异常,但是run方法不行
3.Callable对象执行后可以有返回值,运行Callable任务可以得到一个Future对象,通过Future对象可以了解任务执行情况,可以取消任务的执行,而Runnable不可有返回值
)
用synchronized 关键字修饰同步方法。
反对使用stop(),是因为它不安全。它会解除由线程获取的所有锁定,而且如果对象处于一种不连贯状态,那么其他线程能在那种状态下检查和修改它们,结果很难检查出真正的问题所在。
suspend() 方法容易发生死锁。调用 suspend() 的时候,目标线程会停下来,但却仍然持有在这之前获得的锁定。此时,其他任何线程都不能访问锁定的资源,除非被" 挂起"的线程恢复运行。对任何线程来说,如果它们想恢复目标线程,同时又试图使用任何一个锁定的资源,就会造成死锁。所以不应该使用 suspend() ,而应在自己的 Thread 类中置入一个标志,指出线程应该活动还是挂起。若标志指出线程应该挂起,便用 wait() 命其进入等待状态。若标志指出线程应当恢复,则用一个 notify()重新启动线程。
11.sleep()和wait()有什么区别?
sleep是线程被调用时,占着cpu休眠,其他线程不能占用cpu,os认为该线程正在工作,不会让出系统资源,wait是进入等待池等待,让出系统资源,其他线程可以占用cpu。
sleep()和wait()方法的区别可从两个角度阐述:
1.cpu的抢占权;2.锁旗标是否释放
两者都会释放cpu的抢占权;
wait()方法执行完即可释放锁旗标,进入线程的等待队列;
sleep()执行完,不会释放,进入等待队列;
12. 同步和异步的区别?同步的实现方法?
同步:发送一个请求,等待返回,然后再发送下一个请求。实现:1. Synchronized修饰;2.wait和notify。
异步:发送一个请求,不等待返回,随时可以再发送下一个请求。
同步可以避免出现死锁,读脏数据的发生,一般共享某一资源的时候用,如果每个人都有修改权限,同时修改一个文件,有可能使一个人读取另一个人已经删除的内容,就会出错,同步就会按顺序来修改。
同步和异步最大的区别就在于,一个需要等待,一个不需要等待。
比如广播,就是一个异步例子。发起者不关心接收者的状态。不需要等待接收者的返回信息。
电话,就是一个同步例子。发起者需要等待接收者,接通电话后,通信才开始。需要等待接收者的返回信息。
13. 请对比synchronized与java.util.concurrent.locks.Lock的异同?
主要相同点:Lock能完成synchronized所实现的所有功能
主要不同点:Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释放锁,而Lock一定要求程序员手工释放,并且必须在finally从句中释放。
14.String s =new String (“syz”);创建了几个String Object?
1.如果String常理池(常量缓冲区)中,已经创建"xyz",则不会继续创建,此时只创建了一个对象new String("xyz");
2.如果String常理池中,没有创建"xyz",则会创建两个对象,一个对象的值是"xyz",一个对象new String("xyz")。
15.作用域public、private、protected 以及不写时的区别?
private修饰的成员变量和函数只能在类本身和内部类中被访问。
protected 修饰的成员变量和函数能被类本身、子类及同一个包中的类访问。
public修饰的成员变量和函数可以被类、子类、同一个包中的类以及任意其他类访问。
默认情况(不写)下,属于一种包访问,即能被类本身以及同一个包中的类访问。
作用域 |
当前类 |
同一package |
子孙类 |
其他package |
public |
√ |
√ |
√ |
√ |
protected |
√ |
√ |
√ |
× |
friendly |
√ |
√ |
× |
× |
private |
√ |
× |
× |
× |
16.forward和redirect两种跳转方式的区别?
1.从地址栏显示来说
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.
redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.
2.从数据共享来说
forward:转发页面和转发到的页面可以共享request里面的数据.
redirect:不能共享数据.
3.从运用地方来说
forward:一般用于用户登陆的时候,根据角色转发到相应的模块.
redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等.
4.从效率来说
forward:高.
redirect:低.
本质上说, 转发是服务器行为,重定向是客户端行为。其工作流程如下:
转发过程:客户浏览器发送http请求----》web服务器接受此请求--》调用内部的一个方法在容器内部完成请求处理和转发动作----》将目标资源发送给客户;在这里,转发的路径必须是同一个web容器下的url,其不能转向到其他的web路径上去,中间传递的是自己的容器内的request。在客户浏览器路径栏显示的仍然是其第一次访问的路径,也就是说客户是感觉不到服务器做了转发的。转发行为是浏览器只做了一次访问请求。
重定向过程:客户浏览器发送http请求----》web服务器接受后发送302状态码响应及对应新的location给客户浏览器--》客户浏览器发现是302响应,则自动再发送一个新的http请求,请求url是新的location地址----》服务器根据此请求寻找资源并发送给客户。在这里 location可以重定向到任意URL,既然是浏览器重新发出了请求,则就没有什么request传递的概念了。在客户浏览器路径栏显示的是其重定向的路径,客户可以观察到地址的变化的。重定向行为是浏览器做了至少两次的访问请求的。
java技术知识简介相关推荐
- 终于有人把Java技术知识面试体系整理出来了,这些文档让你的面试稳如泰山
程序猿,一个懂JAVA语言.C++语言.C语言.PHP语言等非人类语言的人类,在普通人看来,做好程序猿太难了.在IT行业有这样一句话:面试造火箭,工作拧螺丝,就是针对程序员的.可想而知,能进入程序猿行 ...
- Java技术分享:什么是数据库连接池?
在JDBC编程中,每次创建和断开Connection对象都会消耗一定的时间和IO资源.这是因为在Java程序与数据库之间建立连接时,数据库端要验证用户名和密码,并且要为这个连接分配资源.Java程序则 ...
- 什么是java?为什么大家都学习java技术?
java技术在互联网行业属于常驻嘉宾,想要进入到互联网行业,学习java技术是首选,那么具体什么是java?为什么大家都学习java技术?来看看下面的详细介绍就知道了. 1. 什么是java? Jav ...
- java技术:输入拼音自动提示汉字的方法
今日课题:java项目经理与你共享"有关输入拼音自动提示汉字的方法". 一.java端 使用不同的项目获取的方法也是不一样的,但最终都要传入客户端端,这部分就不多说了,有开 ...
- IT:后端进阶技术路线图(初级→中级→高级)、后端开发工程师(技术方向分类之后台业务开发/中间件/内核/分布式架构)基础知识简介、技术路线/技术趋势指南(如何选择自己的技术方向)之详细攻略
IT:后端进阶技术路线图(初级→中级→高级).后端开发工程师(技术方向分类之后台业务开发/中间件/内核/分布式架构)基础知识简介.技术路线/技术趋势指南(如何选择自己的技术方向)之详细攻略 目录 后端 ...
- Java基础知识强化之集合框架笔记76:ConcurrentHashMap之 ConcurrentHashMap简介
1. ConcurrentHashMap简介: ConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和Hashtable功能相同但是线程安全的方法.Conc ...
- Java基础知识(二) 面向对象的技术
Java基础知识 面向对象的技术 1. 面向对象与面向过程有什么区别 2. 面向对象有哪些特征 3. 什么是继承 4. 组合和继承的区别 5. 多态的实现机制 6. 重载和覆盖有什么区别 7. 抽象类 ...
- java培训学习开发技术知识该如何进行?【尚学堂】
java培训学习开发技术知识该如何进行?java开发技术在多个的开发领域都得到了广泛的应用,同时,有越来越多的小伙伴选择转行java开发.学习java开发是一个比较不错的选择,学习java开发的方式有 ...
- 今天,正式介绍一下Java极客技术知识星球
前面煽情的文字就不放了,还是那句 别让高手和你距离越来越远,其实你也是高手! 从创建知识星球到现在已经过去一个月的时间了,在这里正式介绍一下 Java极客技术知识星球 星球规划: 一.每周分享一个面 ...
最新文章
- HDU2083排序题
- oracle去重等基础问题
- 机器学习第7天:深入了解逻辑回归
- ​【Python入门】Python数学math模块55个函数详解
- python if高级用法_Python高级用法总结--元类
- 电机入门之路系列1--减速步进电机的原理
- Hadoop实战(3)_虚拟机搭建CDH的全分布模式
- python重构迭代_Pylint:让你的 Python 代码保持一致
- 【优化算法】精子群优化算法(SSO)【含Matlab源码 1465期】
- 算法(一):二分查找
- 如何优化多数据集关联报表
- 我想成为一个记计算机程序员英语作文,关于程序员的英语作文
- 在这做一个词云图生成器来送给大家(附代码),建议收藏
- hadoop 8088端口网页无法打开的原因分析
- Objective-C——initialize方法调用原理分析
- CheckBoxList复选框例子
- 好用的vue瀑布流插件-vue-masonry
- ps-色彩模式与图像色彩调整
- linux e514写入错误,Linux使用vim编辑文件保存时报E514:write error (file system full?)问题解决...
- android不支持USB怎么办,安卓手机usb不能用 手机找不到USB调试模式怎么解决?
热门文章
- pythonnet的使用
- qq2009java触屏_MTK手机QQjava版 山寨机qq2009通用版
- 【稀饭】react native 实战系列教程之首页列表UI实现
- 2021年黄石三中高考成绩查询,2021年黄石中考各学校录取分数线,历年黄石中考分数线汇总...
- 让键盘变成你想要的样子:改键利器 Karabiner-Elements
- revit二次开发 点投影到面_revit二次开发笔记
- 添加pdf打印机后给PDF添加背景
- 2023年值得关注的6大IT趋势
- html好看css列表样式_CSS样式HTML列表样式
- 红外光谱技术在气体检测分析中的应用