java基础
文章平均质量分 52
以Java基础为主,主要是介绍基础概念和一些案例。
锐萌萌
没有什么是对我最好的描述!
展开
-
Synchronized底层实现原理
Java对象底层都关联monitor,使用synchronized时jvm会根据使用环境找到对象的monitor。根据monitor的状态加解锁的判断。如果成功加锁就成为monitor的唯一持有者。Monitor在被释放前不能被其他线程获取。Synchronized在jvm编码后会产生monitorenter和monitorexit这两个字节码指令,获取和释放monitor。这两个字节码指令都需要引用类型的参数指明要锁定和解锁的对象,对于普通同步方法,锁是当前实例对象;对...原创 2022-01-13 15:46:51 · 266 阅读 · 0 评论 -
接口和抽象类的相同点和区别?
相同点:1、都不能被实例化2、接口的实现或抽象类的子类需要实现接口或抽象类中相应的方法才能被实例化不同点:1、接口只能定义方法,不能有方法的实现;而抽象类可以有方法定义与实现2、实现接口的关键字implements,基础抽象类的关键字extends。一个类可以实现多个接口,只能继承一个抽象类。 3、当子类和父类之间存在逻辑上的层次结构,推荐使用抽象类,有利于功能的积累。当功能不需要,希望支持差别较大的两个或更多对象间的特定...原创 2022-01-13 15:33:37 · 2116 阅读 · 0 评论 -
JDK动态代理和Cglib动态代理实现和区别
动态代理分为两种jdk动态代理:jdk利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。 cglib动态代理:利用ASM(开源的Java字节码编辑库,操作字节码)开源包,将代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。 区别:JDK代理只能对实现接口的类生成代理;CGlib是针对类实现代理,对指定的类生成一个子类,并覆盖其中的方法,这种通过继承类的实现方式,不能代理final修饰的类。jdk实现步骤:1.创建一个实现接口Inv原创 2020-10-21 17:50:08 · 422 阅读 · 0 评论 -
"=="和equals的区别
== 是判断两个对象引用的地址是否相同,也就是判断是否为同一个对象==在基本数据类型的时候就是比较值是否相同,而在引用类型是是比较的是地址;equals用于判断引用类型的值equals()通过其它方式比较两个对象是否相等,...原创 2020-01-07 09:51:29 · 133 阅读 · 0 评论 -
javaSe基础学习总结16
文件系统:是对计算机里用到的各种数据(声音,视频,文本、图片)进行管理的一个系统。文件:文件可以用来装各种的数据,具体的文件,一张简历(可以装很多的内容)文件夹:文件夹可以对文件进行管理,装文件的袋子简历袋,可以装很多的文件和文件夹1、file文件类对应文件系统里的文件和文件夹文件系统的每一个文件和文件夹都可以映射为一个file对象 注意:file对象对应文件系统的文件或文件夹可以不存在 通过fi...原创 2018-02-10 17:10:56 · 226 阅读 · 0 评论 -
javaSe基础学习总结17
面向对象超类型Object--存储数据缺点:1)读取数据,不能自动转换为对应的类型 2)设置数据,不能检查类型 泛型参数:1)泛型参数装的是【数据的类型】2)可以在(接口、类、方法)中使用泛型参数代替【数据类型】3)使用(接口、类、方法)的时候传入并确定泛型参数里的【具体的数据类型】使用泛型参数的步骤:1)在(接口、类)定义泛型参数语法:class 类名[<泛型参数名1,泛型参数...原创 2018-02-10 17:11:56 · 190 阅读 · 0 评论 -
javaSe基础学习总结18
泛型1)泛型类——》泛型参数定义类中语法:class 类名<泛型参数名1,泛型参数名2...>{}2)泛型接口——》泛型参数定义接口中语法:interface 接口<泛型参数名1,泛型参数名2...>{}3)泛型方法——》泛型参数定义方法中语法:[访问修饰符 ][static] [<泛型参数名1,泛型参数名2...>] 返回值类型 方法名(参数列表){方法代...原创 2018-02-10 17:13:19 · 205 阅读 · 0 评论 -
javaSe基础学习总结19
FileReader读取字符文件数据的时候默认采用当前java文件对应的字符集进行解码FileWriter写出字符文件数据的时候默认采用当前java文件对应的字符集进行编码怎么解决读取其他字符集的数据--》通过转化流处理流-装饰对象InputStreamReaderOutputStreamWriter 1)readerabstract void close() 关闭该流并释放与之关联的...原创 2018-02-10 17:13:52 · 209 阅读 · 0 评论 -
javaSe基础学习总结20
作用:把程序数据 传输到 数据源显示给用户看。1、打印流PrintStream,PrintWriter (输出流)节点流:连接到文件,把文件作为输出的数据源处理流:1)增加的功能:a)提供一系列print方法: 把各种(基本类型(值的字符串),引用类型(toString的字符串))数据以(字符串)的形式(打印写出)到数据源b)通过print写数据不会有IOException异常2)两者...原创 2018-02-10 17:15:03 · 183 阅读 · 0 评论 -
javaSe基础学习总结21
线程安全和不安全的类区别线程安全: StringBuffer,Vector,Hashtable》该类的同一个对象,可以在多个线程中同时使用,不会出现数据异常。》可以在单线程,或多线程使用线程不安全:StringBuilder,ArrayList,HashMap》该类的同一个对象,如果在多个线程中同时使用,可能出现数据异常。》只能单线程使用--》单线程使用效率比线程安全的类高。 线程-死锁死锁描述:...原创 2018-02-10 17:16:14 · 250 阅读 · 0 评论 -
单例模式之恶汉模式
package test;// 单例之恶汉public class Singleton(){ private Singleton(){} private final static Singleton singleton=new Singleton(); private static Singleton getSingleton(){ return singleton...原创 2018-04-02 18:17:46 · 491 阅读 · 0 评论 -
单例模式之懒汉模式
package test;// 单例之懒汉public class Singleton(){ private Singleton(){} private static Singleton singleton=null; private static Singleton getSingleton(){ if(null==singleto...原创 2018-04-02 18:23:08 · 180 阅读 · 0 评论 -
单例模式之静态内部类
packeage test;//单例之静态内部类private class Singleton(){ private Singleton(){} private static class Singe{ private static final Singleton singleton=new Singleton(); } ...原创 2018-04-02 18:28:19 · 238 阅读 · 0 评论 -
Hashmap与Hashtable的区别
Hashmap与Hashtable的区别1、线程安全hashtable的源码 所有的操作都是synchronized 修饰的hashmap没有2、性能优势Hashtable 是线程安全的,每个方法都要阻塞其他线程,所以 Hashtable 性能较差,HashMap 性能较好,使用更广。3、NULLHashtable 是不允许键或值为 null 的,HashMap 的键值则都可以为...原创 2018-12-05 13:36:14 · 194 阅读 · 0 评论 -
javaSe基础学习总结15
Thorwtable(异常)概念:程序非正常执行(运行时)的情况,程序【运行】遇到了问题!a) Exception(例外):业务处理代码层面的时候发生的问题,这种问题可以解决,可以通过异常机制进行处理b) Error(错误):业务处理jvm层面(运行环境)发生的问题,这种问题不能或不应该通过异常机制进行处理java是面向对象,每一个能被处理的程序问题一般都是Exception对象产生异常:程序代码...原创 2018-02-10 17:08:44 · 189 阅读 · 0 评论 -
javaSe基础学习总结14
数组相关apiString[]split(String regex) 按某个分隔符,分割字符串为多个内容,保存在数组中String(char[]value) 通过字符数组创建字符串char[]toCharArray() 把字符串转换为字符数组String(byte[]bytes, String charsetName) 通过字节数组,和编码创建字符串byte[]getBytes(St...原创 2018-02-10 17:07:33 · 228 阅读 · 0 评论 -
javaSe基础学习总结13
数组的排序:数组的元素按顺序升序或降序排列基本类型排序:Arrays.sort(数组元素名);Arrays.toString(数组的元素名)); 引用类型排序引用类型元素之间怎么比较大小方式1-》利用Comparable接口的compareTo的功能步骤1)数组元素实现Comparable接口--》元素可以比较的2)重写compareTo功能-》提供比较的功能3)使用Arrays的sort(Obj...原创 2018-02-10 17:06:57 · 183 阅读 · 0 评论 -
javaSe基础学习总结2
第一点 字符集文本的编码的方式(字符集):ascii,gbk,utf-8,unicode...文本(文字)存储是通过【字符集】进行编码为【整数】存储在计算机中字符集:存储了很多的【整数】和【字符】对应关系的集合。常见的字符集:ascii,gbk,utf-8,unicode..注意点1)不同的字符集【整数】和【字符】对应关系不一致2)不同的字符集表原创 2018-01-31 17:13:52 · 167 阅读 · 0 评论 -
javaSe基础学习总结3
方法的基本使用概念:方法对应一种功能,方法的多句代码对应该功能实现的步骤,方法名代表该功能做的事情使用步骤:1)方法的定义 写方法功能代码位置:在类中,与其他方法同级别2)调用方法 (运行方法的代码)注意:1)方法定义只能一次2)方法可以运行多次标识符一个字符串,用于给java的结构(类名、方法名、变量,名……)取名字用的1)必须又字母、数字、原创 2018-01-31 17:21:00 · 217 阅读 · 0 评论 -
javaSe基础学习总结4
循环语句for(表达式1;表达式2;表达式3){//循环内容}for的循环的代码结构:for(1)循环变量初始化;2)循环的条件 ;4)【步进语句】 ){ 3)循环体-业务里要求循环做的事情for特点:执行顺序和while一致,为(循环四大结构)提供相应的位置while和for对比:1)表达式1定义变量-作用域在for的{}里面2)表达式2编写内容必须是布原创 2018-01-31 17:22:45 · 235 阅读 · 0 评论 -
javaSe基础学习总结5
方法有返回值1)必须设置返回值类型(不能用void)2)方法所有可能结束执行的位置--必须是return值(通常在最后一句写return值)方法没有返回值1)设置为void类型2)方法代码中不能出现[return 值;],可以写return;return值;的过程:1)把return 后的值 赋值给 返回值类型变量(xx)2)结束方法的执行--return后原创 2018-01-31 17:26:37 · 203 阅读 · 0 评论 -
javaSe基础学习总结6
定义(声明)类:在类中描述 【数据和功能】 位置:与其他类同级别 语法: class 类名{ //0到多个数据-成员变量//0到多个功能-成员方法}成员变量语法(在之前局部变量基础上-位置换成类中): 位置:在类中-与其他方法或成员变量同级别 [修饰符] 数据类型 变量名1[=值],变量名2[=值]…;成员方法语法(在之前方法基础上去掉static即可):原创 2018-02-02 10:15:08 · 147 阅读 · 0 评论 -
javaSe基础学习总结7
eclipse 的debugger模式 调试程序的【运行错误】 作用-》可以动态执行程序每一句代码,根据执行的过程查看环境的数据-分析程序的错误。使用debugger模式的步骤 1)设置断点(程序暂停执行的位置) 代码行首-双击打开和取消 2)通过debugger模式运行程序 右键debugger as … 3)切换到debuger模式的调试平台 》eclipse 右上角的图标原创 2018-02-02 10:16:13 · 179 阅读 · 0 评论 -
javaSe基础学习总结8
访问修饰符 资源(类,属性(成员变量,静态变量),方法)被访问的位置! 四个级别 访问的位置 public 公共的 1)本类中 2)同包中所有的类 3)其他包的子类中 4)其他包的普通类 protected 受保护的 1)本类中 2)同包中所有的类 3)其他包的子类中 default(没有该关键原创 2018-02-02 10:17:07 · 185 阅读 · 0 评论 -
javaSe基础学习总结9
final关键字 概念:最终的,不需要改变的 作用: a)不希望定义的变量不被重新赋值!如固定的数据如:Math.PI b)不希望子类重写已有的功能,认为该功能完美! c)不希望其他类继承某类,认为某类已经完美,不需要扩充,final修饰常量 语法: 常量和变量的对比: 常量:定义一次,只能赋值一次 变量:定义一次,赋值多次原创 2018-02-02 10:26:22 · 233 阅读 · 0 评论 -
javaSe基础学习总结10
字符串String 的常量池 位置:方法区 作用:在常量池中缓存内容相同的字符串对象——节约内存字符串String() 功能:返回字符串在常量池中内容一致的字符串对象 a)在堆里b)在常量池中 字符串对象的创建 1)方法1:0到多个字符 2)方法2:new 对象 String() new String() 抽象类 概念:也是类,多了可以定义抽象方法 抽象方法:空有功能原创 2018-02-02 10:27:50 · 247 阅读 · 0 评论 -
冒泡排序
package test;import java.util.Arrays;/** * 冒泡排序 * @author M * */public class MaoPao {public static void main(String[] args) {int [] arr={1,2,8,9,4,6,5,7};for (int i = 0; i f原创 2017-11-14 13:06:47 · 233 阅读 · 0 评论 -
java基础练习九九乘法表
package com.test;/** * * @author M *99乘法表 *注意: * 打印输出的时候单双引号 */public class test99 { public static void main(String[] args) { for (int i = 1; i for (int j = 1; j原创 2018-02-02 10:48:22 · 350 阅读 · 0 评论 -
javaSe基础学习总结11
数组定义:数组是相同类型数据的有序集合特点:1)其长度是确定的(一旦被创建,它的大小就是不可以改变的)2)其元素必须是相同类型3)数组中的元素可以是任意类型 存储的数组元素是统一的类型,可以类型兼容,自动类型转换a)基本类型: 小数据范围类型 转 大数据范围类型b)引用类型: 子类型 转 超类型4)数组变量属引用类型,数组也可以看成是对象,数组中的元素相当于该对象的成员变量5)通过下标访问数组里的...原创 2018-02-10 17:04:58 · 173 阅读 · 0 评论 -
javaSe基础学习总结12
冒泡排序用整形数组进行排序,两层循环外层循环length-1次,内层循环length-1-外层循环控制变量数值;从前到后两两比较元素大小,若前面的元素小于后面的元素,那么位置不变,反之则对调位置,继续比较 二分法查找拿目标值和数组中间的那一个值进行比较如果目标值大于数组中间的那一个值,则把数组中间值及其左边的元素全部忽略掉反之,则把数组及其右边的值忽略掉。直到找到了目标值或者将数组中的所有元素忽略...原创 2018-02-10 17:06:01 · 187 阅读 · 0 评论 -
javaSe基础之初识java
第一点 讲解Java的三大体系1)Java SE:开发桌面2)Java ME:嵌入式开发,手机等移动设备3)Java EE:网络服务端程序开发第二点 Java的特点1)面向对象2)可移植性(跨平台)3)多线程等第三点 安装JDK、环境变量配置、系统文件后缀配置1)安装JDK开发工具包,JDK之中包含JRE,JRE包含JVM,即JDK也包含JVM原创 2018-01-31 17:11:02 · 350 阅读 · 0 评论