把2------8用最快的办法

2 <<3

super关键字与this关键字的区别:

1. 代表的事物不一致。

1. super关键字代表的是父类空间的引用。

2. this关键字代表的是所属函数的调用者对象。

2. 使用前提不一致。

1. super关键字必须要有继承关系才能使用。

2. this关键字不需要存在继承关系也可使用。

3. 调用构造函数的区别:

1. super关键字是调用父类的构造函数。

2. this关键字是调用本类的构造函数。

super() 和this()不能同时出现,因为二者都需要在第一行子类当中至少有一个来

而不是super/this 或者this.name这种

构造函数和一般函数的区别

1.两个函数定义格式不同

2.构造函数在对象创建时就被调用,用于初始化,且初始化动作只执行一次

一般函数,是在对象创建之后,需要调用才执行,且可以被调用多次

构造代码块和构造函数的区别

构造代码块:给所有对象进行初始化,也就是说,所有的对象都会调用一个代码块,只要对象一建立,就会调用这个代码块【构造静态代码块会在类加载的时候就创建】

构造函数:是给与之对应的对象进行初始化,具有针对性

成员变量和静态变量和局部变量的区别

成员变量:也叫成员属性,描述行为和属性,属于对象,存在堆内存中,随着对象创建而存在,随着对象被回收而消失,只能被对象调用

局部变量:属于方法体,存在于栈内存中,实质上就是一个全局变量

静态变量:属于类,存在于方法区中,随着类加载而存在,随着对象的消失而消失,可以被对象调用,也可以被类名调用

成员变量:

①成员变量定义在类中,在整个类中都可以被访问。

②成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。

③成员变量有默认初始化值。

局部变量:

①局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效。

②局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放。

③局部变量没有默认初始化值

成员变量和静态变量

1、两个变量的生命周期不同

成员变量随着对象的创建而存在,随着对象被回收而释放。

静态变量随着类的加载而存在,随着类的消失而消失。

2、调用方式不同

成员变量只能被对象调用。

静态变量可以被对象调用,还可以被类名调用。

3、别名不同

成员变量也称为实例变量。

静态变量也称为类变量。

4、数据存储位置不同

成员变量存储在堆内存的对象中,所以也叫对象的特有数据。

静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据。

抽象类和接口的区别

1.抽象类只能被继承,而且只能单继承

接口需要被实现,而且可以多实现

2.抽象类中可定义非抽象方法,子类可以直接继承使用

接口中都是抽象方法,需要子类去实现

3.抽象类使用的是 is a 的关系

接口使用的是 like a 的关系

4.抽象类的成员修饰符可以自定义

接口中的成员修饰符是固定的:成员变量:public static final 成员方法:public abstract

error和exception的区别

error属于编译时的错误,根本不会通过编译,即不会生成.class文件

exception属于运行时错误,只有在调用时才会报错,如空指针,数组下标越界等

简单来说就是error要想恢复比较困难,如内存溢出,Exception只要你的程序设计没有问题是不会出现的。

throw和throws的区别

throw:在方法体中(case语句块)

throws:方法体中抛

overload和override的区别

overload是指多个方法具有相同的名字,但这些方法的参数列表不同。方法的返回值类型和参数的名字不参与比较,也就是说如果两个方法的名字相同,即使返回值类型相同,也必须保证参数不同。overload的方法可以有不同的返回值类型。

override是父类与子类之间多态性的一种表现,子类override父类方法时,必须满足的条件是子类override的方法与父类的方法同名、返回值类型相同、参数个数和参数类型相同,而且子类方法的权限不低于父类方法的权限。

进程和线程的区别

进程: 正在进行的程序。(内存+CPU)

单进程:DOS

多进程:WIN

怎么实现的?时间片

线程:进程执行的步骤。

迅雷(Process--cpu+内存)----1-下载(Thread) 2-播放(Thread)

单线程:下载完才能播放。

多线程:在线播放,边下载,边播放---时间片

效率最高的解决方案:多进程的OS+多线程的APP

进程:每个独立执行的程序称为进程

线程:是一个程序内部的一条执行路径,Java虚拟机允许应用程序并发地运行多个执行程序

线程安全和线程同步的区别

线程同步是实现线程安全的一个途经

ArrayList与Vector的区别

ArrayList:底层的数据结构是数组,线程不同步,代替了Vector,查询元素的速度非常快

LinkedList:底层数据结构是链表,线程不同步,增删速度非常快

Vector:底层数据结构是数组,线程同步,不论查询还是删除都很慢【最早出现的一个集合】

final-finally-finalize的区别

final修饰的基本类型相当于常量,不能修改,修饰的类不能继承

finally用在try...catch语句块中,一般用来释放资源

finalize在GC垃圾回收处出现

String-StringBuilder-StringBuffer的区别

String 字符串常量(理解为常量,一经修改就开辟新空间,会产生垃圾)

StringBuffer 字符串变量(线程安全的可变字符序列)

StringBuilder 字符串变量(非线程安全的可变字符序列)

String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,那速度是一定会相当慢的。

StringBuffer 类则结果就不一样了,每次结果都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,再改变对象引用。所以在一般情况下我们推荐使用 StringBuffer ,特别是字符串对象经常改变的情况下

java.lang.StringBuilder,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。两者的方法基本相同。

StringBuffer和StringBuilder的主要区别在于前者线程安全(等价于同步),后者是线程不安全(等价于异步)

如果StringBuffer想要输出的话,则必须用toString()方法先转换成String类型,才能输出

并发和并行的区别

并行:多个cpu实例或者多台机器同时执行一段处理逻辑,是真正的同时

并发:通过cpu调度算法,让用户看上去同时执行,实际上从cpu操作层面不是真正的同时。并发往往在场景中有公用的资源,那么针对这个公用的资源往往产生瓶颈,我们会用TPS或者QPS来反应这个系统的处理能力。

wait和sleep的区别

wait:可以用来指定时间也可以不指定。不指定时间,只能由notify或者notifyAll来唤醒

线程会释放执行权,而且线程会释放锁

sleep:必须指定时间,时间会自动从冻结状态转成运行状态(临时阻塞状态)

线程会释放执行权,但是不释放锁

集合和数组之间的区别

数组-->字符串 toString

字符串-->数组 split

数组:保存基本数据类型

集合:对象

数组-->集合 asList

集合-->数组 toArray

length和length()的区别

数组没有length()方法,有length 的属性。String 有length()方法。JavaScript中,获得字符串的长度是通过length属性得到的,这一点容易和Java混淆

Hashtable和HashMap的区别

1.Hashtable是线程安全的,hashMap线程不安全

2.Hashtable不可以存储null值,HashMap可以

ArrayList和LinkedList的区别

1.ArrayList是实现了动态数组操作,LinkedList类似于链表的数据结构

2.对于增删而言,LinkedList更快,而对于查找ArrayList更快

equals和==

1.对于基本数据类型,==判断的是二者的值

对于引用数据类型,==判断的是二者的地址

1.==是判断两个变量或实例是不是指向同一个内存空间

equals是判断两个变量或实例所指向的内存空间的值是不是相同

2.==是指对内存地址进行比较

equals()是对字符串的内容进行比较

3.==指引用是否相同

equals()指的是值是否相同

Collection和Collections的区别

Collection是接口,它是Set、List等容器的父接口;

Collections是工具类,提供了一系列的静态方法来辅助容器操作,这些方法包括对容器的搜索、排序、线程安全化等等

indexOf,charAt,subString的区别

基本类型和引用类型

普通类型传递的是参数(值)本身,而引用类型传递的是地址

基本类型数据传递的是该数据的值本身(变量的副本)。

引用类型数据传递的是这个对象的引用(的副本),而非对象本身。

next()--nextInt()--nextLine()

next()--String--只读取空格之前的数据,next方法不能得到带空格的字符串。

nextLine()--读取整行,返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的。

nextInt()--int--只读取int数值

读取数字也可以使用nextLine(),不过需要转换:Integer.parseInt(cin.nextLine())

注意在next()、nextInt()与nextLine()一起使用时,next()、nextInt()往往会读取部分数据(会留下"\n"或者空格之后的数据)

字符,字符串,数字之间的转换

string 和int之间的转换

string转换成int  :Integer.valueOf("12")

int转换成string : String.valueOf(12)

char和int之间的转换

首先将char转换成string

String str=String.valueOf('2')

Integer.valueof(str) 或者Integer.PaseInt(str)

Integer.valueof返回的是Integer对象,Integer.paseInt返回的是int

PreparedStatement和Statement区别

前者效率更高,且可以防止sql注入问题

executeQuery和executeUpdate 和execute

executeQuery:返回一个结果集,用于select查询语句中

executeUpdate:用于执行insert,delete,update语句中,其返回值是一个整数(int), 指示受影响的行数(即更新行数)

execute:可用于执行任何SQL语句,返回值是一个boolean类型,表示执行该SQL语句是都返回了ResultSet,如果执行后第一个结果是ResultSet,则返回true,否则返回false.

String 的subString是如何实现的?

标注截取的前后角标,从标注位置开始截取

RuntimeException和一般Exception的区别

RuntimeException和error都是非运行时异常,Exception是需要编译才能显示的异常

Object和Class

Java中Object是所有类的父类,所有类的对象都是Class类的实例。

重定向和转发

重定向:两次请求,一次响应

转发:一次请求,一次响应

servlet请求转发与重定向的区别:

request.setAttribute("test","hello");

request.getRequestDispacther("/test.jsp").forword(request,response);

response.sendRedirect("test.jsp");

一、显示结果:

1、当用request.getRequestDispacther("/test.jsp").forword(request,response); 请求转发后,结果页面输出:hello

2、当用response.sendRedirect("test.jsp");重定向后,结果页面输出:null

二、底层分析:

1、请求转发(RequestDispatcher)的过程:

客户首先发送一个请求到服务器端,服务器端发现匹配的servlet,并指定它去执行,当这个servlet执行完之后,它要调用getRequestDispacther()方法,把请求转发给指定的test.jsp,整个流程都是在服务器端完成的,而且是在同一个请求里面完成的,因此servlet和jsp共享的是同一个request,在servlet里面放的所有东西,在jsp中都能取出来,因此,jsp能把结果getAttribute()出来,getAttribute()出来后执行完把结果返回给客户端。整个过程是一个请求,一个响应。

2、重定向(sendRedirect)的工作原理:

客户发送一个请求到服务器,服务器匹配servlet,这都和请求转发一样,servlet处理完之后调用了sendRedirect()这个方法,这个方法是response的方法,所以,当这个servlet处理完之后,看到response.senRedirect()方法,立即向客户端返回这个响应,响应行告诉客户端你必须要再发送一个请求,去访问test.jsp,紧接着客户端受到这个请求后,立刻发出一个新的请求,去请求test.jsp,这里两个请求互不干扰,相互独立,在前面request里面setAttribute()的任何东西,在后面的request里面都获得不了。可见,在sendRedirect()里面是两个请求,两个响应。

三、表面分析:

1、当用RequestDispatcher请求转发后,地址栏为http://localhost:8080/test/TestServlet

这真好应正了上面的分析,我们起初请求的就一个servlet,至于你服务器端怎么转,流程怎么样的,我客户端根本就不知道,我发了请求后我就等

着响应,那你服务器那边愿意怎么转就怎么转,我客户端不关心也没法知道,所以当服务器端转发到jsp后,它把结果返回给客户端,客户端根本就

不知道你这个结果是我真正访问的servlet产生的,还是由servlet转发后下一个组件产生的。

2、当用sendRedirect重定向后,地址栏为http://localhost:8080/test/test.jsp

因为这个时候,客户端已经知道了他第二次请求的是test.jsp,服务器已经告诉客户端要去访问test.jsp了,所以地址栏里会显示想要访问的结果。

常量池和连接池

常量池:专门存放字符串

连接池:数据库连接池负责分配,管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个

构造方法不能被static、final、native、abstract和synchronized修饰,不能被子类继承。

Java中--XX和XX的区别相关推荐

  1. java中的异常种类和区别以及处理机制和区别

    java中的异常种类和区别以及处理机制和区别 按照异常需要处理的时机分为编译时异常(也叫强制性异常)也叫 CheckedException 和运行时异常(也叫非强制性异常)也叫 RuntimeExce ...

  2. java中ArrayList和LinkedList的区别

    首先来看ArrayList和LinkedList的集成类和接口的区别.// lang java public class ArrayList<E> extends AbstractList ...

  3. java中Runnable和Callable的区别

    文章目录 运行机制 返回值的不同 Exception处理 java中Runnable和Callable的区别 在java的多线程开发中Runnable一直以来都是多线程的核心,而Callable是ja ...

  4. java中wait和sleep的区别

    文章目录 Wait和sleep的区别 唤醒wait和sleep java中wait和sleep的区别 在本篇文章中,我们将会讨论一下java中wait()和sleep()方法的区别.并讨论一下怎么使用 ...

  5. java throw与throws_基于Java中throw和throws的区别(详解)

    系统自动抛出的异常 所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行. 语句抛出的异常 ...

  6. Java中重载和复写的区别

    Java中重载和复写的区别 重载(overload) 复写(override) 区别和联系 重载(overload) 函数重载的最突出的例子就是类的构造函数,用户定义一个对象时可能会提供多种参数组合: ...

  7. Java中equals()方法和==的区别分析

    Java中equals方法和==的区别分析 equals(Object obj)方法,将对象与传入的obj进行比较,相等返回true,否则返回false.equals方法和"==" ...

  8. java is instance of_详谈Java中instanceof和isInstance的区别

    一次性搞定instanceof和isInstance,instanceof和isInstance长的非常像,用法也很类似,先看看这两个的用法: obj.instanceof(class) 也就是说这个 ...

  9. throws java_基于Java中throw和throws的区别(详解)

    系统自动抛出的异常 所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行. 语句抛出的异常 ...

  10. Java中notify和notifyAll的区别 - 何时以及如何使用

    Java  notify   vs notifyAll notify和notifyAll方法之间有什么区别是棘手的Java问题之一! Condition 是个什么玩意? 提几个问题,从问题中去了解去学 ...

最新文章

  1. 使用java连接JanusGraph进行操作,hbase报错信息为:Caused by: org.apache.hbase.thirdparty.io.netty.channel.AbstractCh
  2. Android Bluetooth 文件接收路径修改方法
  3. Java多线程(八)之Semaphore、CountDownLatch、CyclicBarrier、Exchanger
  4. IntelliJ IDEA开发工具安装Scala插件使用
  5. Vue 事件绑定 事件修饰符 条件判断 循环遍历
  6. 2021年3月计算机语言排名,2021年3月编程语言排行榜:TOIBE将迎来重大改变,SQL如愿挤进前十...
  7. 从TextBox的升级看VB6与VB2010的不同~
  8. H264数据格式解析
  9. html5 几何酷站,10个值得学习的HTML5+CSS3视觉特效酷站欣赏
  10. 揭秘淘宝用户增长全链路项目管理
  11. 以云服务器产品为例,深度分析比对华为云、阿里云、腾讯云
  12. 鲁东大学linux试题,大学体育试题库
  13. python3 排列组合
  14. 让devcpp支持c++11
  15. 聚苯乙烯/二氧化硅荧光微球/硫化镉-聚苯乙烯微球CdS/PS复合微球的制备方式
  16. hadoop性能测试
  17. 育碧遭黑客攻击:用户账号被窃
  18. CODESYS 赛搏机器智能MIC7001总线控制器+松下A6BE总线驱动器
  19. 腾讯开放平台 iOS应用URL schema、Bundle ID填写 (含微博、微信)
  20. 二进制拆弹实验详解linux,拆解二进制炸弹

热门文章

  1. 小米账号登陆无法连接服务器,登录小米账号显示,无法连接网络,怎么回事?...
  2. HTML5期末大作业:明星个人网站设计——权志龙(10页) 含设计报告HTML+CSS++JavaScript 个人网站模板下载 大学生简单DW个人网页作品代码 个人网页制作 学生个人网页...
  3. 在Win10系统中用mimikatz抓取明文密码
  4. 远心镜头(Telecentric lens)原理介绍
  5. Hypergraph Neural Networks超图神经网络
  6. 模块化机房建设指导书_模块化机房建设方案.doc
  7. 简述物联网感知技术_物联网中应用的感知技术
  8. 08CMS之后台二次开发
  9. Mars3D开发基础学习:3DTiles三维模型
  10. 我的c盘为多余的java.exejavaw.exe_java.exe,javac.exe,javaw.exe 是什么进程?