java基础
文章平均质量分 57
学了这么久都学不懂
迷路的小绅士
无敌的我又迷路了
展开
-
Java迭代器:轻松遍历集合元素的设计模式
迭代器使得开发人员无需了解集合底层的实现细节,便可以方便地对集合中的元素进行遍历。迭代器模式在Java的集合框架(Collection Framework)中得到了广泛的应用,其中包括List、Set、Queue等接口。总的来说,迭代器模式是一种非常实用的设计模式,尤其适用于需要遍历集合中元素的场景。迭代器实现类:这是迭代器接口的具体实现,负责管理集合中的元素。通常,迭代器实现类会维护一个指向集合中下一个元素的指针,并提供相应的方法来遍历和访问这些元素。然后,我们使用迭代器遍历这个集合,输出所有元素。原创 2023-05-26 23:57:01 · 771 阅读 · 1 评论 -
hashCode与equals方法去重原理
1.HashSet存储自定义对象import java.util.HashSet;class Student { String name; int age; public Student(String name, int age) { this.name = name; this.age = age; } @Over...原创 2019-04-07 14:17:18 · 656 阅读 · 0 评论 -
注解
一、注解概述从JDK5.0开始,Java增加了对元数据(MetaData)的支持,也就是Annotation(注解)Annotation其实就是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。通过使用Annotation,程序员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充信息。代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证或者进行部署Annotation可以像修饰符一样被使用,可用于修饰包、构造器、方法、成员变量、参数、局部变量的声明,这些信息被保原创 2020-10-28 08:20:05 · 180 阅读 · 0 评论 -
java中的枚举类
在Java中,枚举类(Enumeration Class)是一种特殊的数据类型,用于定义一个有限的、特定的、命名的值集合。枚举类可以将一组常量统一管理,从而提高代码的可读性和可维护性。枚举类在Java中的应用非常广泛,它们可以用来表示状态、替代常量、限制输入值等。枚举类是Java中非常重要的一种数据类型,可以用来表示有限的、特定的、命名的值集合。在实际应用中,枚举类可以用来表示状态、替代常量、限制输入值等。使用枚举类能够带来很多好处,包括代码清晰、类型安全、易于维护和扩展等。原创 2020-10-26 08:31:17 · 425 阅读 · 1 评论 -
向上转型与向下转型
一、基本概念向上转型实际就是多态,那何为多态呢?多态指的是对象的多态性,即负累引用指向子类对象;向下转型是为了解决父类无法调用子类的属性和方法的问题而出现的形式。package 转型;/** * @BelongsProject: untitled * @BelongsPackage: 转型 * @Author: mcc * @CreateTime: 2020-08-16 21:17 * @Description: */public class PersonTest { publ原创 2020-08-16 21:51:28 · 182 阅读 · 0 评论 -
创建一个长度为6的int型数组,要求取值为1-30,同时元素值各不相同
上述代码中,我们首先创建了一个长度为6的int型数组,并且通过Random类来生成随机数。然后,我们使用嵌套循环来判断当前生成的数字是否与之前的数字重复。如果重复了,则跳过本次循环,重新生成一个数字;如果没有重复,则将该数字存入数组中。最后,我们遍历输出数组中的各个元素。以上就是一种创建长度为6的int型数组,要求元素值在1-30之间且不重复的方法。这种方法既简单又高效,可以在实际应用中广泛使用。原创 2020-03-23 01:12:40 · 3858 阅读 · 8 评论 -
使用二维数组打印一个10行的杨辉三角
public class Test { public static void main(String[] args) { //1.初始化数组 int[][] arr = new int[10][];//动态初始化一个二维数组 //2.给数组的元素赋值 for (int i = 0; i < arr.length; i++...原创 2020-03-22 11:36:24 · 968 阅读 · 0 评论 -
Java中数组的基本使用
一维数组的初始化int[] arr1;//声明arr1 = new int[]{1,2,3,4,5};//静态初始化:数组的初始化和数组元素的赋值操作同时进行String[] arr2 = new String[5];//动态初始化:数组的初始化和数组元素的赋值操作分开进行int[] arr3 = {1,2,3,4};//简便写法,最常用数组的属性-lengthpublic cl...原创 2020-03-22 00:00:39 · 287 阅读 · 0 评论 -
学生管理系统IO版
package 学生管理系统IO版;public class Student { private String id; private String name; private String age; private String address; public Student() { } public Student(String...原创 2019-03-16 15:35:13 · 197 阅读 · 0 评论 -
学生管理系统
package 学生管理系统;/** * 这是我的学生类 */public class Student { //学号 private String id; //姓名 private String name; //年龄 private String age; //地址 private String address; ...原创 2019-03-12 23:43:32 · 177 阅读 · 0 评论 -
5.ThreadLocal详解
1.概念ThreadLocal 用于提供线程局部变量,在多线程环境可以保证各个线程里的变量独立于其它线程里的变量。也就是说ThreadLocal 可以为每个线程创建一个【单独的变量副本】,相当于线程的private static 类型变量。ThreadLocal 的作用和同步机制的区别:同步机制是为了保证多线程环境下数据的一致性;ThreadLocal 是保证了多线程环境下数据的独立性。...原创 2019-06-09 11:48:17 · 248 阅读 · 0 评论 -
线程的同步与死锁
同步问题:每一个线程对象轮番“抢占”共享资源带来的问题。(实际上占主导权的还是CPU,这里只是形象的描述)卖票小程序class MyThread implements Runnable{ private int ticket = 1000;//一共1000张票 @Override public void run() { for(int i=0;i&amp;amp;lt;1000;i++) { ...原创 2018-11-18 17:15:08 · 268 阅读 · 0 评论 -
Java基础面试
面向对象三大特性重载与覆写的区别==与equals的区别接口抽象类的区别抽象类是用来捕捉子类的通用特性的。它不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板。接口是抽象方法的集合。如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法。String、StringBuffer和StringBuilder的区别在Java中提供了String、Stri...原创 2019-11-25 19:00:24 · 365 阅读 · 0 评论 -
把集合中的数据写到文本文件
把ArrayList集合中的字符串数据存储到文本文件项目根目下的array.txt中,每一个字符串元素作为文件中的一行数据package 把集合中的数据写到文本文件;/* * 把ArrayList集合中的字符串数据存储到文本文件 * 每一个字符串元素作为文件中的一行数据 * * 分析: * A:创建集合对象 * B:往集合中添加字符串元素 * C:创建输出缓冲流对象...原创 2019-03-14 18:55:36 · 291 阅读 · 1 评论 -
把文本文件中的数据读取到集合
从项目根目录下的array.txt文本文件中读取数据到ArrayList集合中,并遍历集合,每一行数据作为一个字符串元素package 把文本文件中的数据读取到集合;/* * 从文本文件中读取数据到ArrayList集合中,并遍历集合 * 每一行数据作为一个字符串元素 * * 分析: * A:创建输入缓冲流对象 * B:创建集合对象 * C:读取数据,每次读取一行数据...原创 2019-03-14 19:08:51 · 851 阅读 · 0 评论 -
键盘录入3个学生信息(学号,姓名,年龄,居住地)存入集合。然后遍历集合把每一个学生信息存入文本文件(每一个学生信息为一行数据,自己定义分割标记)
package 键盘录入3个学生信息;public class Student { private String id; private String name; private String age; private String address; public Student() { } public Student(String...原创 2019-03-14 20:45:48 · 9385 阅读 · 0 评论 -
把上一案例的array.txt文本文件中的学生信息读取出来存储到集合中,然后遍历集合,在控制台输出
package 把上一题的文本文件中的学生信息读取出来存储到集合中然后遍历集合在控制台输出;public class Student { private String id; private String name; private String age; private String address; public Student() { }...原创 2019-03-16 15:11:58 · 2895 阅读 · 0 评论 -
Java集合(初级)
1.为什么会出现集合类? 我们学习的是面向对象编程语言,而面向对象编程语言对事物的描述都是通过对象来体现的。为了方便对多个对象进行操作,我们就必须对这多个对象进行存储,而要想对多个对象进行存储,就不能是一个基本的变量,而应该是一个容器类型的变量。 到目前为止,我们学习过了哪些容器类型的数据呢?StringBuilder,数组。StringBuilder的结果只能是一个字符串类型,不一定满...原创 2019-03-12 17:39:30 · 261 阅读 · 0 评论 -
复制文本文件的5种方式
A:利用基本流一次读写一个字符B:利用基本流一次读写一个字符数组C:利用缓冲流一次读写一个字符D:利用缓冲流一次读写一个字符数组E:利用缓冲流的特有方法一次读写一个字符串package 复制文本文件的5种方式;/* * 复制文本文件(5种方式) * * 数据源: * FileWriterDemo.java * 目的地: * Copy.java */import...原创 2019-03-14 18:40:08 · 689 阅读 · 0 评论 -
为什么出现类这个概念
文章目录前言一、类、对象是什么?二、使用OOP面向对象解决总结前言示例:张老太养了两只猫猫:一只名字叫小白,今年3岁,白色。还有一只叫小花,今年100岁,花色。请编写一个程序,当用户 输入小猫的名字时,就显示该猫的名字,年龄,颜色。如果用户输入的小猫名错误,则显示张老太没有这只猫猫。方法一:单独变量来解决public class Object01 { public static void main(String[] args) { String cat1Name = ".原创 2019-03-05 19:32:43 · 509 阅读 · 0 评论 -
Comparable接口与Camparator接口区别
package 使用Comparator接口;import java.util.Comparator;import java.util.Set;import java.util.TreeSet;class Person{ private String name; private Integer age; public Person(String name, ...原创 2019-01-01 14:27:46 · 325 阅读 · 0 评论 -
fail-fast机制(快速失败)与fail-safe(安全失败)
原创 2018-12-28 20:34:10 · 537 阅读 · 0 评论 -
Java集合(高级)
1.为什么出现集合类?面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式(另一种方式是数组)。2.数组和集合同是容器,有何不同?数组虽然也可以存储对象,但长度是固定的,集合长度是可变的。数组中可以存储基本数据类型,而集合只能存储对象。3.集合类的特点集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。...原创 2018-12-07 09:01:29 · 592 阅读 · 0 评论 -
“+”的常用规则
public class Test { public static void main(String[] args) { String x = "1"; int y = 2; int z = 3; System.out.println(x+y+z); }}当String对象进行"+"操作,编译时会将String类...原创 2018-11-28 14:58:06 · 279 阅读 · 0 评论 -
一个类是否可以同时继承Thread与实现Runnable接口?——可以。
public class Test extends Thread implements Runnable{ public static void main(String[] args) { Thread t = new Thread(new Test()); t.start(); }}从上面代码可以看出,Test类实现了Runnable接口,但...原创 2018-11-26 21:14:37 · 3939 阅读 · 0 评论 -
反射
1.概念对象的反向处理,根据对象倒退类的组成。1.1反射核心类:Class类(专门描述其他类的组成)1.2Object类中取得对象的class对象:public final native Class<?> getClass( );Class类描述接口与类的组成,Class对象由JVM在第一次加载类时产生,并且全局唯一。1.3取得任意类Class对象的方法Ⅰ.调用对象....原创 2018-12-02 14:09:28 · 344 阅读 · 0 评论 -
什么是守护线程
1.概念守护线程又被称为“服务进程”、“精灵线程”或“后台线程”,是指在程序运行时在后台提供一种通用服务的线程,这种线程并不属于程序中不可或缺的部分。通俗点讲,任何一个守护线程都是整个JVM中所有非守护线程的“保姆”。2.用户线程与守护线程的区别如果用户线程已经全部退出运行,只剩下守护线程存在了,JVM也就退出了。因为当所有非守护线程结束时,没有被守护者,守护线程也就没有工作可做了,也就没有...原创 2018-11-17 15:06:53 · 3233 阅读 · 0 评论 -
多线程的常用操作方法
目录一、线程命名与取得二、线程休眠Thread.sleep()----单位(ms)三、线程让步Thread.yield()四、线程插队join()4.1案例14.2案例24.3案例3五、sleep和yield的区别六、线程停止6.1手工设置标记位6.2使用stop( )方法6.2.1对线程不安全的解释:6.3使用Thread类提供的interrupt( )中断线程6.3.1案例16.3.2案例2七、线程调度1.调度策略2.线程优先级一、线程命名与取得多线程的运行状态是不确定的,所以对于多线程操作必须有一原创 2018-11-15 11:27:10 · 504 阅读 · 0 评论 -
File类与I/O流
1、IO流概述及分类IO流用来处理设备之间的数据传输Java对数据的操作是通过流的方式Java用于操作流的类都在IO包中流按流向分为两种:输入流,输出流2、FileWriter类使用FileWriter向文件中写数据操作步骤: a:使用FileWriter流关联文件 b:利用FileWriter的写方法写数据 c:利用FileWriter的刷新方法将数据从内存刷到...原创 2019-03-13 16:03:39 · 200 阅读 · 0 评论 -
StringBuilder类
1.概念StringBuilder是一个可变的字符串,被称为字符串缓冲区类。2.常用方法构造方法方法名功能StringBuilder()构造一个不带任何字符的字符串生成器,其初始容量为16个字节成员方法方法名功能public int capacity()返回当前容量 (理论值)public int length()返回长度(已经存...原创 2019-03-26 13:26:44 · 201 阅读 · 0 评论 -
定义一个Father和Child类,并进行测试
要求如下: 1)Father类为外部类,类中定义一个私有的String类型的属性name,name的值为“zhangjun”。 2)Child类为Father类的内部类,其中定义一个introFather()方法,方法中调用Father类的name属性。 3)定义一个测试类Test,在Test类的main()方法中,创建Child对象,并调用introFather ()方法。 考点:...原创 2018-04-10 16:46:45 · 2760 阅读 · 0 评论 -
一个Java文件中是否可以定义多个类
可以。但是最多只能有一个类被public修饰,并且这个类的类名与文件名必须相同,若这个文件中没有public的类,则文件名随便是一个类的名字即可。class Base{ public void print(){ System.out.println("Base"); }}public class Derived extends Base{ public static void ma...原创 2019-06-11 22:29:36 · 1460 阅读 · 0 评论 -
Java中的作用域有哪些
在计算机程序中,声明在不同地方的变量具有不同的作用域,例如局部变量、全局变量等。在Java语言中,作用域是由花括号的位置决定的,它决定了其定义的变量名的可见性与生命周期。在Java语言中,变量的类型主要有3种:成员变量、静态变量和局部变量。类的成员变量的作用范围与类的实例化对象的作用范围相同,当类被实例化时,成员变量就会在内存中分配空间并初始化,直到这个被实例化对象的生命周期结束时,成员变量...原创 2018-10-12 14:34:36 · 12910 阅读 · 5 评论 -
如何实现在main( )方法执行前输出“Hello World”
&amp;amp;#160; &amp;amp;#160;&amp;amp;#160; &amp;amp;#160;众所周知,在Java语言中,main( )方法是程序的入口方法,在程序运行时,最先加载的就是main( )方法,但这是否意味着main( )方法就是程序运行时第一个被执行的模块呢?答案是否定的。在Java语言中,由于静态块在类被加载时就会被调用,因此可以在main( )方法执行前,利用静态块实现输出“Hello W...原创 2018-10-11 15:44:48 · 1790 阅读 · 0 评论 -
Java中的代码块
1.在非主类中的静态块class Person{ {//定义在类中,不加任何修饰符 System.out.println(&amp;amp;amp;amp;quot;1.Person类的构造块&amp;amp;amp;amp;quot;); } } public Person(){ System.out.println(&amp;amp;amp;amp;quot;2.P原创 2018-03-31 10:22:01 · 176 阅读 · 0 评论 -
为什么需要public static void main(String[ ] args)这个方法
1.主函数:是一个特殊的函数,作为程序的入口,可被jvm调用。 2.主函数的定义:public:代表着该函数访问权限是最大的static:代表主函数随着类的加载就已经存在了void:主函数没有具体的返回值(String[ ] arr):函数的参数,参数类型是一个数组,该数组中的元素是字符串,字符串类型的数组3.主函数是固定格式的: jvm识别 4.jvm在调用主函数时,传入的...原创 2018-04-15 10:45:34 · 2963 阅读 · 0 评论 -
构造器的使用
1.特点函数名与类名相同不用定义返回值类型不可以写return语句2.示例class Person{ Person(){ System.out.println(&quot;person run&quot;); }}public class PersonDemo { public static void main(String[] args) { ...原创 2018-07-24 09:59:34 · 276 阅读 · 0 评论 -
序列化
1.基本概念将内存中保存的对象变为二进制数据流的形式进行传输,或者是将其保存在文本中。注: 序列化对象时需要保存的就是对象中的属性,所以默认情况下对象的属性将被转化为二进制数据流存在。2.序列化与反序列化package 序列化;import java.io.*;@SuppressWarnings("serial")class Person implements Serializab...原创 2019-05-28 23:12:12 · 97 阅读 · 0 评论 -
HashMap源码深究
一、什么是HashMap?(自己的语言)1.概念:我认为HashMap应该分为两个部分来说。首先Hash就是一个散列,而散列就是将一个任意长度通过某种(hash函数算法)算法转换成一个固定值。其次是Map,按照中文翻译是地图,而地图是通过x,y两个坐标来确定某一位置;其实Map就是通过Hash出来的值定位到这个map,然后把value存储到这个Map中。2.底层数据结构(jdk1.7)数组...原创 2019-04-21 23:33:07 · 195 阅读 · 0 评论 -
Iterator接口
1.什么是迭代器?迭代器(Iterator)是一个对象,它的工作是遍历并选择序列中的对象。它提供了一种访问一个容器(container)对象中的各个元素,而又不必暴露该对象内部细节的方法。通过迭代器,开发人员不需要了解容器底层的结构,就可以实现对容器的遍历。由于创建迭代器的代价小,因此迭代器通常被称为轻量级的容器。2.Iterator接口两个核心方法:①boolean hasNext():...原创 2019-04-09 15:22:03 · 1379 阅读 · 0 评论