java知识点笔记

面试造飞机,工作拧螺丝。面试题中总有一大堆稀奇古怪基本用不着的冷知识,刷题时候看见了,记下来,没什么顺序。慢慢补充

 

String 存放常量池中字符串,StringBuffer 存放字符数组。

 

request.getAttribute()方法返回request范围内存在的对象,而request.getParameter()方法是获取http提交过来的数据。getAttribute是返回对象,getParameter返回字符串。

 

抽象类中,抽象方法中不能用private,static, synchronized,native等修饰词修饰。(注意是抽象方法)

 

抽象类和接口都可以有静态成员。

 

String a ="tao"+"bao";

编译时"tao"+"bao"将直接变成"taobao"。

(b+c)==MESSAGE;

而针对b+c则是用语法糖,新建一个StringBuilder来处理。

 

 main()函数即主函数,是一个前台线程。

 

java四类八种基本数据类型: 整型 byte,short,int,long 。浮点型 float,double。逻辑型 boolean。字符型 char(没有String)

 

基本上我们平常用到的都是非线程安全的集合类,因为要使线程安全,是要加锁来实现的,势必造成性能降低。如hashset、hashmap、arraylist、linkedlist、treemap、treeset、stringbulider等。

像stringbuhffer、vector、hashtable这些都是专用于多线程的,再者以concurrent(意为:同时发生的)为前缀的集合类大多是线程安全的。

 

进程是执行着的应用程序,而线程是进程内部的一个执行序列。一个进程可以有多个线程。

 

创建线程的四种方式

继承Thread类
实现Runnable接口
应用程序可以使用Executor框架来创建线程池

实现Runnable接口这种方式更受欢迎,因为这不需要继承Thread类。在应用设计中已经继承了别的对象的情况下,这需要多继承(而Java不支持多继承),只能实现接口。同时,线程池也是非常高效的,很容易实现和使用。

还有一种方式是实现Callable接口

 

线程的几种可用状态。

 

在java语言中,判断一块内存空间是否符合垃圾收集器收集标准的标准只有两个:

1.给对象赋值为null,以下没有调用过。

2.给对象赋了新的值,重新分配了内存空间。

 

常量池:未经 new 的常量

堆区:成员变量的引用,new 出来的变量

栈区:局部变量的引用

 

服务器端:ServerSocket提供的实例 ServerSocket server = new ServerSocket(端口号) 

客户端:Socket提供的实例 Socket client = new Socket(IP地址,端口号)

 

抽象方法不能有方法体

 

java异常和错误的基类Throwable,包括Exception和Error

 

java是面向对象的,但是不是所有的都是对象,基本数据类型就不是对象,所以才会有封装类的;

 

Object 类中方法及说明如下:

  • registerNatives()   //私有方法
  • getClass()    //返回此 Object 的运行类。
  • hashCode()    //用于获取对象的哈希值。
  • equals(Object obj)     //用于确认两个对象是否“相同”。
  • clone()    //创建并返回此对象的一个副本。
  • toString()   //返回该对象的字符串表示。   
  • notify()    //唤醒在此对象监视器上等待的单个线程。   
  • notifyAll()     //唤醒在此对象监视器上等待的所有线程。   
  • wait(long timeout)    //在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或        者超过指定的时间量前,导致当前线程等待。   
  • wait(long timeout, int nanos)    //在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待。
  • wait()    //用于让当前线程失去操作权限,当前线程进入等待序列
  • finalize()    //当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。

 

Collection
    -----List
               -----LinkedList    非同步
                ----ArrayList      非同步,实现了可变大小的元素数组
                ----Vector          同步           
    -----Set   不允许有相同的元素

 Map
    -----HashTable        同步,实现一个key--value映射的哈希表,key和value都不允许出现null值
    -----HashMap          非同步,
    -----WeakHashMap   改进的HashMap,实现了“弱引用”,如果一个key不被引用,则被GC回收

注:
List接口中的对象按一定顺序排列,允许重复 
Set接口中的对象没有顺序,但是不允许重复 
Map接口中的对象是key、value的映射关系,key不允许重复

 

HashMap允许使用null值和null键,HashMap是无序的



JSP 共有以下 6 种基本动作:

  • jsp:include:在页面被请求的时候引入一个文件;
  • jsp:useBean:寻找或者实例化一个JavaBean。;
  • jsp:setProperty:设置 JavaBean 的属性。;
  • jsp:getProperty:输出某个 JavaBean 的属性;
  • jsp:forward:把请求转到一个新的页面;
  • jsp:plugin:根据浏览器类型为 Java 插件生成 OBJECT 或 EMBED 标记。

 

 

final用于声明属性、方法和类:

 

  • final属性不可变,指的是引用不可变,而不关心指向对象内容的变化,被final修饰的变量必须初始化
  • final方法不可被子类重写,可以实现inline(内联)的机制
  • final类不可以被继承(如String、StringBuffer),所有的方法不可以被重写,但其内的非final变量可以被修改

 

 

sleep只能让正在执行的线程暂停执行,但不会释放锁

wait方法在其他线程调用对象的notify或notifyAll方法前会导致当前线程等待。线程会释放占有的锁。

wait()方法才会释放锁,而join( )方法底层调用的就是wait( )方法

yield只能使当前线程重新回到可执行状态,不会释放锁

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值