JAVA第一阶段

java基础

遗忘点,难点

1.ASCII码表中,48—0,65—A,97------a,32------空格
2.``System.out.println(–a);
System.out.println(a–);
结果是不同的,
3.逻辑与(&)和短路与(&&)的区别:逻辑与的判断方式是:
从左到右依次判断,直到结尾(逻辑全程运算)
短路与的判断方式是:
从左到右依次判断,直到出现false为止将不再判断,直接得到结果为false(短路遇false就停)
4. switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。
switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。default 在没有 case 语句的值和变量值相等的时候执行。default 分支不需要 break 语句。
5.方法重写时,重写方法的异常抛出不能大于父类的方法的异常。
6.return,break,continue之间的区别
7.单例模式:第一种------饿汉式(直接创建本类对象,提供使用)
第二种------懒汉式(先不创建对象,等到需要的时候再进行创建)是对一种饿汉式的优化(1)融入延迟加载的思想,.不会再第一时间加载资源,创建对象,而是等到需要使用的时候再来判断加载。(2)解决线程安全隐患,在操作共享数据的时候加锁。
第三种------DoubeCheckedLocking
创建类DoubleCheckedLockingDemo

/**
 * volatile,弱锁(1.只能修饰变量。
 * 2.且只保证原子的可见性,不保证原子性。
 * 3.不会造成线程阻塞.
 * 4.不会被编译器优化。
 * 5.本质就是告诉JVM当前变量在寄存器(工作内存)中的值是不确定的,需要从主内存中读取)
 * 可见性:做的任何改变,其他对象都知道
 * synchronized ,强锁
 * 原子性:要成功都成功,要失败都失败
 * 单例模式
 * @author tarena
 *双重校验锁
 */
public class DoubleCheckedLockingDemo {
	//1.创建构造方法并且私有化;
	private DoubleCheckedLockingDemo() {
	}
	//2.创建该类的对象,懒
	private static volatile DoubleCheckedLockingDemo singleton;
	//3.提供一个方法,让其他可以来获取该对象
	public static DoubleCheckedLockingDemo getSingle() {
		System.out.println("执行了。");
		if(singleton==null) {
			synchronized (DoubleCheckedLockingDemo.class) {
				if(singleton==null){
				singleton=new DoubleCheckedLockingDemo();
			}		}
		}
		return singleton;
	}
}

创建多线程类TestDoubleCheckedLocking 来检验单例是否正确。

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class TestDoubleCheckedLocking implements Runnable{

	public static void main(String[] args) {
		// 
		TestDoubleCheckedLocking t1=new TestDoubleCheckedLocking();
		ExecutorService pool = Executors.newFixedThreadPool(10);
		pool.execute(t1);
		pool.execute(t1);
		pool.execute(t1);
		pool.execute(t1);
		pool.execute(t1);
	}

	@Override
	public void run() {
		// TODO Auto-generated method stub
		DoubleCheckedLockingDemo single1 = DoubleCheckedLockingDemo.getSingle();
		DoubleCheckedLockingDemo single2 = DoubleCheckedLockingDemo.getSingle();
		System.out.println(Thread.currentThread().getName()+(single1==single2));
	}

}

第四种----------枚举,单例的特殊写法。
8.synchronized、volatile、ReentrantReadWriteLock的区别
9.接口与接口之间可以多继承,类与类只能单继承(子类继承抽象类,要么子类为抽象类,要么重写父类所有抽象方法),类可以实现多个接口且必须重写所有接口方法,或者变成抽象类。接口没有构造方法,实现接口的类的super(),可能调用的是顶级父类OBJECT的构造方法。
10.接口里没有成员变量,都是常量。所以,你定义一个变量没有写修饰符时,默认会加上:public static final
11.接口里的方法,默认就都是抽象的,如果你不写明是abstract的,那会自动补齐 public abstract
12.StringBuffer底层是依赖了一个字符数组才能存储字符数据 的,该字符串数组默认 的初始容量是16,自动增长1倍+2。

ArrayList相当于在没指定initialCapacity时就是会使用延迟分配对象数组空间,当第一次插入元素时才分配10(默认)个对象空间。假如有20个数据需要添加,那么会分别在第一次的时候,将ArrayList的容量变为10;之后扩容会按照1.5倍增长。也就是当添加第11个数据的时候,Arraylist继续扩容变为10*1.5=15;当添加第16个数据时,继续扩容变为15 * 1.5 =22个

ArrayList没有对外暴露其容量个数,查看源码我们可以知道,实际其值存放在elementData对象数组中,那我们只需拿到这个数组的长度,观察其值变化了几次就知道其扩容了多少次。怎么获取呢?只能用反射技术了。

默认的负载因子大小为0.75,当一个map填满了75%的bucket时候,和其它集合类(如ArrayList等)一样,将会创建原来HashMap大小的两倍的bucket数组,初始容量是2^4.

反序列化,读的方法,在读到最后一个为NULL的时候会抛出异常 EOEFException.

SOCKET服务器端的单个字节读取流,在判断返回值-1的时候会抛出异常。

OI流中复制粘贴,输出流的时候,按照数组的大小来写入,必须每次写数组大小的实际长度,否则会出现多写的BUG

如何把对象强制转化为LIST对象集合。
13.----
1.oop特征---------封装(安全性),继承(代码复用性),多态(灵活性),他们的特征和优点是什么?
2.集合
—collection
—list
----set
----map集合

		3.BIO,NIO,AIO
		4.反射
		5.JVM原理
		6.算法

错题bug集

1.运算问题

        int x=4;
		System.out.println("value is"+((x>4)?99.9:9));
		//输出结果为  value is 9.0(运算结果显示为大的数据类型)

2.String的构造方法,和运算

        String str=null;
		System.out.println(str);//输出为null
		//System.out.println(str.length());//会报空指针异常,因为 str为空
		String str1=new String();
		System.out.println(str1);//打印的是空白,String重写了ToString方法。
		System.out.println(str1.length());//打印的是0
		String str2=str+str1;//相当于null+“”,任意的跟字符串相加,最后转化为字符串,所以Str2的值是“null”
		System.out.println("相加后的值:"+str2);//null
		System.out.println("相加后的长度"+str2.length());//打印长度为4

3.兔子数列的实现。冒泡排序。文件读取,再筛选。控制台输入一行字符,得到对应字符出现的次数。

4.在反射时,获取私有属性必须用getDeclared***,在设置属性值的时候必须暴力设置私有属性可见,否则要报错。
在这里插入图片描述
5.在用GIT串代码,出现

在这里插入图片描述
常用的GIT命令操作:

链接: 文章目录.

知识补充.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值