自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一名小白的进阶之路

一名正在努力的大四应届生

  • 博客(45)
  • 收藏
  • 关注

原创 Java之浅析线程同步问题(synchronized的使用)

为什么要使用synchronized?主要针对并发编程的安全问题:共享数据或多线程共同操作共享数据时保证同一时刻只有一个线程可以使用共享资源。问题发现:定义一个售票类,继承Thread,重写run方法,初试ticket值为100。运行结果:省略前面部分,只截取出错展示问题分析:在程序中我们定义了如果票数小于等于0时则立即停止循环,但是现在出现了第0张票和第-1张票。...

2020-01-31 21:12:46 5276 1

原创 Java之对象操作流一次读取多个对象的问题

问题描述:在操作对象流的时候应该有很多小伙伴遇到在读取对象时不知文件内对象的具体个数,所以读取时不知末尾结束判断标志,或者以为返回的是对象所以末尾结束标志就会是null,导致每次读取程序都会报错,针对此种问题下面给大家两种解决办法:(提示:自定义对象后需要将对象实现接口Serializable,让对象启用序列化功能,否则无法写进文件)1.将所有对象先用集合打包好,再写入,不管集合存有多少个对象...

2020-01-30 08:29:26 3887 3

原创 Java之浅析BufferedInputStream和BufferedOutputStream的高效原理

/*普及:计算机中内存的访问速度(运算效率)比硬盘的访问速度(运算效率)要高得多*/在代码中使用BufferedInputStream和BufferedOutputStream能够提高数据的传输效率原因如下:①当只使用FileInputStream和FileOutputStream进行数据复制时,每次FileInputStram从数据源(硬存)中读取一个字节,然后交给b,再把b给Fil...

2020-01-27 16:45:18 3324 3

原创 Java之为什么IO流中read方法返回值是int类型?

提问:为什么IO流的read()方法读取的是一个字节但是返回却是int,而不是byte?/*提示:数据在内存里以补码的形式存储是为了简化计算机的结构设计,同时也提高了运算速度。在计算机系统中,数值一律用补码来表示和存储*/byte类型-1的源码:10000001 反码:11111110 补码:11111...

2020-01-27 13:58:20 2893

原创 Java之HashSet除重原理

HashSet的除重原理:先判断HashCode方法,后判断equals方法,若两者同时返回true则认为对象与集合中对象重复,若HashCode返回false则不再执行equals。HashCode方法:根据一套特殊的计算方法返回一个整形值,此值被HashSet用来定位对象的存储地址。equals方法:判断两个对象的内容是否相等。除重判断流程:HashSet会将新增对象与集合中的每一...

2020-01-22 16:00:10 2696

原创 Java之asList使用注意事项

asList():用于将一个数组转换成集合。演示:输出结果:1.用asList将数组转换成List集合不能增加或者删除元素,只能使用集合中的方法。//相当于集合的方法更多,转换成集合可以有更多操 作,若对转换后的集合进行删除或者添加会报不支持操作的异常。2.若将基本数据类型的数组用isList方法转换成集合,会被(整体)当成一个对象转换,因为集合中保存的都是对象。...

2020-01-21 21:58:21 1083

原创 Java之Timer类计时器提醒功能

Timer类:依赖系统日期,提供计时器通知服务。schedule(TimerTask task,Date time):安排在指定的时间执行指定的任务。TimerTask:任务类,任务实现方法为抽象方法run。所以需要定义一个子类继承TimerTask,然后重写run方法,即将所需执行任何写入方法体。Date:时间类,设置任务执行时间,依托系统日期为准。以schedule方法为例子,...

2020-01-30 22:02:20 1465

原创 Java之单例设计模式

一、饿汉式二、懒汉式()注释:与饿汉式的区别在于并没有一开始就实例化本类对象,而是等到调用的时候才实例化。三、无名版(了解即可)三、饿汉式和懒汉式的区别:1.饿汉式是空间换时间(不管用否都实例化),懒汉式是时间换空间(第一次用时实例化,每次调用都需要先判断是否为空)。2.在多线程访问时,饿汉式不会创建多个对象,而懒汉式有可能会创建多个对象。2的注释:当第一个...

2020-01-30 20:20:23 438

原创 Java之约瑟夫环

约瑟夫环:假设有N人坐在一起,现在给他们编号1-N,现在选取编号每次是k的倍数的人出局,直至最后留下一个人。题目:假设现在有8人,给他们编号1,2,....,8,现在选取编号是3的倍数的人出局,请问最后一个幸运的人编号是几?结果:当传入参数为8时,输出结果为7。...

2020-01-29 22:01:10 385

原创 Java之File类过滤器实现、功能方法等知识点

1.File类的概念File类:用于得到一个路径对象,路径可分为相对路径和绝对路径。相对路径:相对于某个位置下,只需要写相对位置下后的路径即可。绝对路径:绝对路径是一个固定的路径,从盘符开始。2.File类的构造方法:①File(String pathname):根据一个路径得到File对象。②File(String parent,String child):根据一个目...

2020-01-26 22:54:40 513

原创 Java之自定义异常

为什么要自定义异常?程序员可以通过异常的名字区分到底是什么样的异常,有针对性的Debug。如何自定义异常?创建一个异常类继承Exception或RuntimeException,类名格式最好为“异常错误名+Exception”。演示:①创建一个专门处理年龄越界的异常类②主代码调用输出结果:注意:若是继承的父类是RuntimeException(运行时异常)时...

2020-01-26 15:39:40 405

原创 Java之finally关键字的面试题

1.final,finally和finalize的区别final:修饰类时,不能被继承。 修饰方法时,不能被重写。 修饰变量时,只能赋值一次。finally:是try语句中的一个语句体,不能单独使用,用来释放资源。finalize:是一个方法,当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。2.如果catch里面...

2020-01-26 14:52:24 820

原创 Java之try...catch异常处理

一、异常处理的格式之try...catch 1.try(用来检测异常)...catch(用来捕获异常)...finally(释放资源),catch可以有多个,跟哪个匹配上则执行哪个里的语句,3种搭配格式如下: /*finally的特点:若程序开始执行try,并且在finally之前JVM并未退出,则finally中的语句一定会执行。 finally的作用:用户释放资源...

2020-01-26 12:17:03 1841

原创 Java之HashMap和Hashtable的区别

共同点:底层都是哈希算法,都是双列集合区别:①HashMap是线程不安全的,效率高,JDK1.2版本的 Hashtable是线程安全的,效率低,JDK1.0版本的②HashMap可以存储null键和null值 Hashtable不可以存储null键和null值觉得有用的小伙伴请点赞、评论或收藏一下多支持支持博主小弟,跪安~~...

2020-01-23 11:46:54 181

原创 Java之Map集合

一、常用方法简述1.添加功能 V put(K key,V value):添加元素 如果键是第一次存储,则直接存储元素,返回null。 如果键不是第一次存储,就用值把以前的值替换,返回以前的值。2.删除功能 void clear():移除所有的键值对元素 V remove(Object key):根据键删除键值对元素,并把值返回。3.判断功能...

2020-01-23 11:45:02 567

原创 Java之TreeSet除重、排序实现方式

TreeSet:接口Set的一个实现类,除了具有除重的功能外与还可以对集合对象进行排序。compareTo方法:实现除重和排序。当返回负数(小于)则存在左边,返回正数(大于)则存在右边,返回0(相等)则不存。使用方式:①自然排序TreeSet类的add()方法中会把存入的对象提升为Comparable类型调用对象的compareTo()方法和集合中的对象比较 //若对象为自定...

2020-01-22 22:02:03 922

原创 Java之增强for的概述和使用

增强for:简化数组和Collection集合的遍历,底层实现依赖的是迭代器(Iterator)格式:for(元素数据类型 变量:数组或Collection集合){ 使用变量; }例子:①遍历数组输出:②遍历对象输出结果:注意:在增强for循环中不能进行删除操作,因为底层实现是Iterator迭代器,而删除需要使用Itera...

2020-01-21 20:17:11 336

原创 Java之ArrayList集合存储空间变化问题

ArrayList在初始化时大小为10,若当集合大小不足时,则会新创建一个集合空间长度为原来的1.5倍,即增长50%,此时新集合中则多了50%的空间可以存储新的对象。解析:在集合中,若当集合空间不足时会创建一个新的集合并且新集合存储空间比原集合大,为了可以继续增加对象。若新集合存储空间增长过少,则会出现不断创建新集合而舍弃旧集合浪费存储空间的情况;若新集合创建过大,则会出现剩余空间过多的情况,...

2020-01-20 12:21:37 594

原创 Java之集合概述

集合:可以往里面保存多个对象,存放的是对象地址,并且存储长度不固定。1.数组和集合的区别:①数组既可以存储基本数据类型,又可以存储引用数据类型,基本数据类型存储的是值,引用数据类型存储的是地址值。 集合只能存储引用数据类型(对象),集合中也可以存储基本数据类型,但是存储的时候回自动装箱变成对象。②数组长度是固定的,不能自动增长。 集合的长度是可变的,可以根据元素的增...

2020-01-20 08:58:26 198

原创 Java之正则表达式

本文列举为常用正则表达式的解释范例,想深入探索更多正则表达式请下载JDK API 中文版搜索 Pattern类。概念:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式用法:String 变量名= "正则表达式"; ...

2020-01-19 16:55:59 482

原创 Java之Integer的面试题

1.Integer i1 = new Integer(127); Integer i2 = new Integer(127); System.out.println(i1 == i2); //False,i1和i2都是通过new分配的内存空间,所以指向两个不同的内存空间 System.out.println(i1.equals(i2));//True2.Intege...

2020-01-19 10:17:47 912

原创 Java之四种权限修饰符的使用范围

Java中有四种权限修饰符:(YES代表可以访问,NO代表不可以访问) public > protect > (default) > private同一个类中 YES YES YES YES同一...

2020-01-16 21:56:21 473

原创 Java之final关键字的用法

final关键字代表最终,不可改变。常见有四种用法:①.用来修饰一个类②.用来修饰一个方法③.用来修饰一个局部变量④.用来修饰一个成员变量1.修饰类格式:public final class 类名称{ //..... }含义:当前这个类不能有任何的子类,如果一个类去继承用final修饰的类会报错...

2020-01-16 21:43:30 354

原创 Java之instanceof的使用

问题:如何知道一个父类引用的对象本来是什么子类?格式:对象名称 instanceof 类名称此方法会返回一个boolean值结果,判断前面对象是不是后面类的实例化,是返回true,否返回false。public static void main(String[] args) { Animal animal = new Cat(); //本来是一只猫 getAnimal(a...

2020-01-16 20:35:47 232

原创 Java之对象的向上转型和向下转型

1.向上转型:本质是多态的体现格式:父类名称 对象名 = new 子类名称(); Animal animal = new Cat();含义:右侧创建一个子类对象,把它当成父类来看待使用。 创建一支猫,把它当成动物来看。注意事项:向上转型一定是安全的。从小范围转到了大范围,从小范围的猫向上转型为更大范围的...

2020-01-16 20:03:57 447

原创 Java之多态

extends继承或者implements接口实现,是多态的前提。多态中成员变量的使用特点:1.直接通过对象名称访问成员变量:看等号左边是谁,优先用谁的,没有则向上找。//Fu obj = new Zi(),等号左边是Fu类 例: 创建一个类Fu,Fu包含成员变量num=10; 创建一个类Zi,并Zi继承Fu,Zi中包含成员变量num=20; ...

2020-01-16 19:23:57 275

原创 Java之接口相关知识点

接口中可包含的内容有:1.常量(Java7)2.抽象方法(Java7)3.默认方法(Java8新增)4.静态方法(Java8新增)5.私有方法(Java9新增)=============================分割线=============================1.接口中抽象方法的定义:public abstract 返回值类型 方法名称(参数列表)...

2020-01-16 16:20:33 272

原创 Java之重载和重写的区别

重写(Override):子类继承父类,子类中方法与父类的方法名称一样,参数列表【也】要一样。 //重写又称为覆盖、覆写重载(Overload):类中定义方法的时候,可以多个方法的名称一样,但是参数列表【不】能一样。关于重载概念不太理解的学友请查看我的另外一篇关于重载解释的文章https://blog.csdn.net/qq_40275740/article/details/103...

2020-01-15 21:04:23 256

原创 如何修改CSDN的显示ID

当你想在CSDN注册一个账号写博客,但是打开CSDN官网只有选择微信扫码或输入账号密码等方式自动登录,登录后发现ID号是自动分配的数字字符组合,想要去修改一个自己想要的,此时有两种方法解决。1.第一种方法:注销刚注册的账号,重新用微信扫码登录 注销刚注册的账号,重新用微信扫码登录,这时网站会提醒你的微信号没有绑定CSDN账号,会让从新设置一个专属的账号名 称。2.第二种方法:...

2020-01-15 20:28:30 5180

原创 Java之关于局部变量和类成员变量和父类成员变量重名时的调用问题

用局部变量:直接写成员变量名用本类的成员变量:this.成员变量名用父类的成员变量:super.成员变量名例子:↓Father:父类中定义了 int num=10;Child extends Father:子类继承父类,并且自有成员变量 int num=20;public class Child extends Father{ int num=20; p...

2020-01-15 19:35:17 921

原创 Java之静态代码块的使用

静态代码块的格式是:public class 类名称{ static{ //静态代码块的内容 }}特点:当第一次用到本类时,静态代码块执行唯一一次,往后再用到此类不再执行。 动态内容总是优先于非静态,所以静态代码块比构造方法先执行。静态代码块的典型用途:一次性给静态成员变量进行赋值觉得有用的小伙伴请点赞、...

2020-01-15 18:16:05 237

原创 Java之静态Static的内存图

觉得有用的小伙伴请点赞、评论或收藏一下多支持支持博主小弟,跪安~~

2020-01-15 18:08:34 340

原创 Java之Static的使用

1.Static修饰成员变量 在Student类中定义了静态成员变量room,调用方式有两种:①类名.静态变量名:Student.room②对象名.静态变量名:Student stu = new Student(); stu.room;2.Static修饰成员方法在Student类中定义了静态成员方法shoutname,调用方法有两种:①类名.静态变量名:S...

2020-01-15 12:28:33 211

原创 Java之字符串的比较相关方法

在字符串对象比较当中,== 是进行对象的地址值比较,如果需要字符串的内容相比较,可以使用两个方法:1.public boolean equals(Object obj):参数可以是任何对象,只有参数是一个字符串并且内容相同的才会给true,否则返回false。 注意事项: ①任何对象都能用Object进行接收 ②equals方法具有对称性,也就是a.equals(b)和...

2020-01-15 09:23:37 258

原创 Java之字符串常量池

常量池:字符串的常量池在堆中,存储的都是类似于 String str = “asf” 这种直接用双引号赋值的字符串。例:主代码String str1 = "aaa";String str2 = "aaa";char[] charArray= {'a','b','c'};String str3 = new String(charArray);System.out.println(s...

2020-01-14 23:30:26 202

原创 Java之字符串的4种创建方法和不可变性

字符串的特点:1.字符串的内容永不可变。2.因为字符串的不可改变,所以字符串是可以共享的3.字符串效果上相当于是char[ ]字符数组,但是底层原理是byte[ ]字节数组字符串的不可变性:字符串在内存中一旦生成便不可改变 例: String str = “abc”; ...

2020-01-14 23:14:52 530

原创 Java之匿名对象

匿名对象:只能使用一次的对象,与正常初始化对象不同在于匿名对象没有左侧,不需要赋值给对象变量。例如: new Student().shoutname(); 初始化了一个Student对象并同时调用类中的shoutname方法,但是没有把初始化的Student对象赋值给一个Student变量,所以只能使用一次。错误理解:new Student().name = "李林"; ...

2020-01-13 17:08:44 183

原创 Java之类Scanner的使用

Scanner:是一个扫描流,可以扫描键盘输入和文件的输入,简单来说就是获取键盘输入或获取文件内容。使用步骤:①导包;②创建对象;③使用1.若定义sc为一个读取键盘输入的对象: Scanner sc = new Scanner(System.in); 若此时需要获取一个键盘输入的int数据:int num = sc.nextInt(); 若此时需要获取一个键盘输入的Stri...

2020-01-13 12:14:31 219

原创 Java之当方法变量和类成员变量命名冲突时,This关键字的使用

当方法的局部变量和类的成员变量重名的时候,根据“就近原则”,优先使用局部变量;如果需要访问本类当中的成员变量,需要使用格式:this.成员变量名示例,下面是程序的主代码:当方法的变量和类成员变量发生冲突时,方法参数接收的是莉莉,成员变量是康康,下图为不用this的运行结果:根据上方可以看出,如果冲突时,不加this,则方法会根据“就近原则”选取方法传过来的name。...

2020-01-13 11:30:45 3506

原创 Java之内存划分

Java的内存需要划分为5个部分(1、2、3为理解重点):1.栈(Stack):存放的都是方法中的局部变量,方法的运行也是在栈中。 局部变量:方法的参数,或者是方法{ }内部的变量 作用域:一旦超出作用域,立即从栈内存中消失2.堆(Heap):凡是new出来的东西,都在堆当中 堆内存里面的东西都有一个地址值:16进制...

2020-01-12 18:21:07 128

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除