java基础

1,jdk和jre,JVM

jdk简单来说就是开发工具,jre是开发环境

 

2,字节码

字节码是JVM能够理解,且只面向JVM的代码。其扩展名为.clss

 

3,hashtable与hashmap

hashtable是线程安全的,hashtable是不安全的,允许键值为空

HashMap ,hashtable都实现了Serializable接口,因此它支持序列化

HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMap

hashtable是线程安全的,所以多线程下使用

 继承的父类不同: Hashtable继承自Dictionary类,而HashMap继承自AbstractMap类。但二者都实现了Map接口

 

4,== 和 equal

==判断是这两个对象是否为同一个东西,equal判断的是这两个对象是否相同

 

5,重载与重写

重写:发生在子类和父类之中,外壳不变,核心重写

重载:发生在同一个类中,参数类型必须不一样

重写与重载之间的区别

区别点重载方法重写方法
参数列表必须修改一定不能修改
返回类型可以修改一定不能修改
异常可以修改可以减少或删除,一定不能抛出新的或者更广的异常
访问可以修改

一定不能做更严格的限制(可以降低限制)

6,面向对象的三大特性(封装,继承,多态)

https://blog.csdn.net/jianyuerensheng/article/details/51602015 

 

7,抽象类和接口

a.一个类只能继承一个抽象类,而一个类却可以实现多个接口

b.抽象类可以有成员方法具体实现,接口只存在public abstract

c.抽象类可以有静态代码块和静态方法,接口不能

d.抽象类的成员变量可以是多种类型,接口只能是public static final

为什么要用static?

  至于这个问题,是和Java语言的本身机制有关。我们知道Java不支持多继承,但是一个类可是现实多个接口。我们假设有两个接口A和B,而类C实现了接口A和B。假设,此时,A和B中都有一个变量N,如果N不是static类型的,那么在C中该如何区分N到底是A的还是B的呢?而,如果是static类型的,我们可以通过A.N和B.N来区别调用A或者B中的成员变量N。

static变量在Java中是属于类的,它在所有的实例中的值是一样的。当类被Java虚拟机载入的时候,会对static变量进行初始化。如果你的代码尝试不用实例来访问非static的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。

 

8,线程

a,继承thread

b,实现runable接口

c,应用程序可以使用Executor框架来创建线程池

 

9,集合

Collection:代表一组对象,每一个对象都是它的子元素

set:无需不重复的collection元素

list:有序可重复的collection

Map:可以把键(key)映射到值(value)的对象,键不能重复

 

10,Array和ArrayList

a,Array可以包含基本类型和对象类型,ArrayList只包含对象类型

b,Array大小是固定的,ArrayList大小是动态变化的

( ArrayList和LinkedList都实现了List接口,有以下的不同点:
1、ArrayList是基于索引的数据接口,它的底层是数组。它可以以O(1)时间复杂度对元素进行随机访问。与此对应,LinkedList是以元素列表的形式存储它的数据,每一个元素都和它的前一个和后一个元素链接在一起,在这种情况下,查找某个元素的时间复杂度是O(n)。
2、相对于ArrayList,LinkedList的插入,添加,删除操作速度更快,因为当元素被添加到集合任意位置的时候,不需要像数组那样重新计算大小或者是更新索引。
3、LinkedList比ArrayList更占内存,因为LinkedList为每一个节点存储了两个引用,一个指向前一个元素,一个指向下一个元素。

 

// 的实例化顺序,比如父类静态数据,构造函数,字段,子类静态数据,构造函数,字段,当 new 的时候, 他们的执行顺序。
类加载器实例化时进行的操作步骤(加载–>连接->初始化)。
父类静态代变量、
父类静态代码块、
子类静态变量、
子类静态代码块、
父类非静态变量(父类实例成员变量)、
父类构造函数、
子类非静态变量(子类实例成员变量)、
子类构造函数。
————————————————
版权声明:本文为CSDN博主「是华仔呀」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43495390/article/details/86533482)

 

11,异常处理

43.Java中的两种异常类型是什么?他们有什么区别?

Java中有两种异常:受检查的(checked)异常和不受检查的(unchecked)异常。不受检查的异常不需要在方法或者是构造函数上声明,就算方法或者是构造函数的执行可能会抛出这样的异常,并且不受检查的异常可以传播到方法或者是构造函数的外面。相反,受检查的异常必须要用throws语句在方法或者是构造函数上声明。这里有Java异常处理的一些小建议。

 

12,Exception和Error

Exception和Error都是Throwable的子类。Exception用于用户程序可以捕获的异常情况。Error定义了不期望被用户程序捕获的异常。

 

13,try,catch,finally执行顺序

首先无论怎样,finally都会被执行

当try中有return时:

try{

  a

retrun b;

}catch(exception e){

}finally{

c

}

则执行顺序是:a——c——b

 

当finally中有return时:

try{

a;

retrun b;

}catch(exception e){

return c;

}

执行顺序是:a——c

是的,这时try里面的return就不会再执行了。

 

14,string,stringBuffer,stringBuild

string是final修饰的对象,不能被继承和修改大小。String是常量,当创建之后即不能更改。(可以通过StringBuffer和StringBuilder创建String对象(常用的两个字符串操作类)。

stringBuffer是线程安全的,也是被final修饰,不能继承

stringBuild是非线程安全的,同在于toString时,会返回一个新的对象。

 

15,运行时的异常

我们比较熟悉的RumtimeException子类:

Java.lang.ArithmeticException(算数异常,比如0做了分母)
Java.lang.ArrayStoreExcetpion(数组存储异常,比如将一个错误类型对象存储到一个对象数组)
Java.lang.ClassCastException(

ClassCastException  表示类型转换异常    

例如:Pet 宠物类   Dog  狗狗类 (继承Pet)  Penguin 企鹅类(继承Pet)

  Dog  dog  =  (Dog)pet  ;  正确  向下转型

  Dog   dog =   (Dog)penguin  ;  错误  向下转型

处理方法:使用  instanceof  进行类型判断,可以避免类型转换异常

    Pet pet = new Dog();

  例:  if(pet  instanceof  Dog){

    Dog dog = (Dog)pet;    

    }else if(pet instanceof Penguin){

    Penguin  penguin = (Penguin)pet;

    }


Java.lang.IndexOutOfBoundsException
Java.lang.NullPointerException

 

16,实现数组和 List 之间的转换
List转换成为数组:调用ArrayList的toArray方法。
数组转换成为List:调用Arrays的asList方法。

 

17,多线程如果线程挂住了怎么办。
根据具体情况(sleep,wait,join等),酌情选择notifyAll,notify进行线程唤醒。

反思:我们在审视某个人的时候,应该理解到每个人的所受知识结构不同,是不同“框架”下的产物,应该反思自己是不是也是这样,是否被条条框框所限制,是否值得学习。而不是一开始就由着自己的情绪,肆意妄为。

 

18,session和cookie

1:cookie数据存放在客户的浏览器上(客户端),session数据放

@1:cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie 欺骗,如果主要考虑到安全应当使用session

@2:session会在一定时间内保存在服务器上.当访问增多,会比较占用你服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用cookie

2:单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的cookie不能3K

@3:将登陆信息等重要信息存放为session;其他信息如果需要保留,可以放在 cookie 中

3:session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到.而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的.cookie只能是子路径访问父路径设置的cookie


你以为我会求你?

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值