JAVASE

JAVASE

JAVA零基础学习

前期视频主要讲解基础教学内容,主要观看对象为0基础的初学者,本文主要记录面试笔试中出现的一些不足之处的知识点,意在查缺补漏,基础内容部分此处不多赘述。若是有个别基础内容面试中出现到了也会在此补充。
Hello World 环境安装 选择循环语句的编写 有基础的就掠过吧

基础

基本数据类型
在这里插入图片描述
基础数据类型还是需要掌握的 别基础数据类型答一个String面试就可以结束了
拓展问题经常会问:

  • int VS Integer
  • String VS StringBuffer VS StringBuilder

整型拓展

 		int i= 10; //10 
        int i1 = 0b10; //2 2进制前缀0b
        int i2 = 010; //8 8进制前缀0
        int i3 = 0x10; //16 16进制前缀0x

switch
在这里插入图片描述

查看class文件
在这里插入图片描述
在这里插入图片描述

流程控制

增强for循环
没有下标的循环遍历不适合用在数组对象的操作,适合用于打印数组
在这里插入图片描述

方法与数组

可变参数
个人感觉和直接传递数组差不多 只是少了建立数组的过程 本质上就是数组
在这里插入图片描述

在这里插入图片描述
内存分析
在这里插入图片描述
Array类

        int[] a = {1,3,5,2,4,6};
        System.out.println(Arrays.toString(a));//[1, 3, 5, 2, 4, 6]
        Arrays.sort(a);
        System.out.println(Arrays.toString(a));//[1, 2, 3, 4, 5, 6]
        Arrays.fill(a,6);
        System.out.println(Arrays.toString(a));//[6, 6, 6, 6, 6, 6]

面向对象

继承相关
在这里插入图片描述
多态相关
在这里插入图片描述
程序加载顺序
在这里插入图片描述

异常

Error VS Exception
Error:错误
Exception:异常
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

基础教学的0基础部分就到这块结束了 GUI编程部分由于本人之前用JAVA SWING GUI写过一些课程项目 且该知识点在现在的面试笔试中出现概率较少 GUI过时了已经第二部分的GUI视频暂且跳过 下面开始进入多线程部分

多线程

多线程

这一部分的重点在线程实现和线程同步

线程简介

run VS start
在这里插入图片描述
在这里插入图片描述
详细的进程线程差别此处掠过,详见操作系统部分笔记
注意中描述的是并行和并发的情况
并行:同一时间点上,多个任务同时处理(需要多CPU/多核)
并发:同一时间段内,多个任务同时处理(单CPU/单核亦可)
在这里插入图片描述

线程实现

在这里插入图片描述
通过继承来实现(JAVA只有单继承)
在这里插入图片描述
通过接口来实现
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Callable的好处
1.可以定义返回值
2.可以抛出异常

Lambda表达式
简化代码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
因为接口里只有一个方法,所以不用管方法名
在这里插入图片描述
还可以更加简化

		Ilove love = (int a)-> {
                System.out.println("i love you->" + a);
            };
        //简化1.去掉参数类型
        love = (a)-> {
            System.out.println("i love you->" + a);
        };
        //简化2.简化括号
        love = a -> {
            System.out.println("i love you->" + a);
        };
        //简化3.去掉花括号
        love = a -> System.out.println("i love you->" + a);

        love.love(520);
        //lambda表达式只有在一行代码的情况下才能简化为一行
        //多行则需要用代码块进行包裹
        //前提是接口为函数式接口:只有一个方法的接口
        //多个参数时 要去掉类型就一起去掉 但是要加括号

        Ihate hate = (int a,int b)->{
            System.out.println("i hate you->" + a + b);
        };

        hate = (a,b)->{
            System.out.println("i hate you->" + a + b);
        };

        hate = (a,b)-> System.out.println("i hate you->" + a + b);
        hate.hate(250,233);
//接口
interface Ilove{
    void love(int a);
}

interface Ihate{
    void hate(int a,int b);
}

静态代理

//静态代理模式
//开闭原则:在不修改源代码的基础上做功能增强
//代理是对方法的增强,装饰器是对对象的增强
//真实对象和代理对象都要实现同一个接口
//代理对象要代理真实角色
//好处:
//  代理对象可以做很多真实对象做不了的事情
//  真实对象可以专注做自己的事情
new Thread(()-> System.out.println("我爱你")).start();//Thread本质是对Runnable的静态代理
//Runnable接口和Thread代理都有run方法,最后调用的是Thread的start方法,但实际执行的还是Runnable中的run方法中的方法体
new WeddingCompany(new You()).Marry();

线程状态

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
233 这个sleep反优化太真实了
这里有个sleep对比wait

  • sleep不会释放锁
  • wait会释放锁
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    线程不能启动两次及以上
    在这里插入图片描述
    优先级低只是意味着获得调度的概率低.并不是优先级低就不会被调用了.这都是看CPU的调度
    同前面的yield礼让一样 都是概率问题
    在这里插入图片描述

线程同步

多个线程操作同一个资源
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ReentrantLock 可重入锁
在这里插入图片描述

线程通信

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值