
Java学习日志
tdongmu
小白学习Java
展开
-
多线程-voliate关键字
并发三特征可见性和有序性和原子性中,volatile通过新值立即同步到主内存和每次使用前从主内存刷新机制保证了可见性。通过禁止指令重排序保证了有序性。无法保证原子性。synchronized关键字通过lock和unlock操作保证了原子性,通过对一个变量unlock前,把变量同步回主内存中保证了可见性,通过一个变量在同一时刻只允许一条线程对其进行lock操作保证了有序性。...原创 2021-02-22 17:43:57 · 354 阅读 · 0 评论 -
Java基础对反射知识总结
1.获取Calss对象的三种常见方式1)Class clazz=String.class;2) Class clazz=person.getClass();3)Class clazz=Class.forName(String classPath);//体现反射的动态性2.对Class类的理解Class实例对应着加载到内存中的一个运行时类;3.创建Class对应的运行时类的对象的通用方法,以及对应运行时类构造器要满足的要求方法:Object obj=clazz.newInstan.原创 2021-01-05 04:37:09 · 193 阅读 · 1 评论 -
io--流缓冲流,转换流,对象流
处理流之一:缓冲流的使用1.缓冲流:BufferedInputStreamBufferedOutputStreamBufferedReaderBufferedWriter2.作用: 提供流的读取、写入的速度 提高读写速度的原因:内部提供了一个缓冲区3. 处理流,就是“套接”在已有的流的基础上。4.缓冲流的具体使用 /* 实现非文本文件的复制 */ @Test public void BufferedStreamTest()...原创 2020-12-17 02:09:40 · 194 阅读 · 0 评论 -
io流-字节流文件输入输出流
FileReader和FileWriter(输入文本类)输入一个文件测试1. read()的理解:返回读入的一个字符。如果达到文件末尾,返回-12. 异常的处理:为了保证流资源一定可以执行关闭操作。需要使用try-catch-finally处理3. 读入的文件一定要存在,否则就会报FileNotFoundException。public void testFileReader1() { FileReader fr = null; try {原创 2020-12-15 02:25:47 · 331 阅读 · 0 评论 -
io流-file类的使用
File类的使用1. File类的一个对象,代表一个文件或一个文件目录(俗称:文件夹)2. File类声明在java.io包下3. File类中涉及到关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法, 并未涉及到写入或读取文件内容的操作。如果需要读取或写入文件内容,必须使用IO流来完成。4. 后续File类的对象常会作为参数传递到流的构造器中,指明读取或写入的"终点".1.如何创建File类的实例 File(String filePath) ...原创 2020-12-14 02:21:50 · 166 阅读 · 0 评论 -
集合-Map
一、Map的实现类的结构: |----Map:双列数据,存储key-value对的数据 ---类似于高中的函数:y = f(x) |----HashMap:作为Map的主要实现类;线程不安全的,效率高;存储null的key和value |----LinkedHashMap:保证在遍历map元素时,可以按照添加的顺序实现遍历。 原因:在原有的HashMap底层结构基础上,添加了一对指针,指向前一个和后一个元素。...原创 2020-12-11 04:09:05 · 279 阅读 · 0 评论 -
集合-HashSet接口
一、Set:存储无序的、不可重复的数据以HashSet为例说明:1. 无序性:不等于随机性。存储的数据在底层数组中并非按照数组索引的顺序添加,而是根据数据的哈希值决定的。2. 不可重复性:保证添加的元素按照equals()判断时,不能返回true.即:相同的元素只能添加一个。二、添加元素的过程:以HashSet为例: 我们向HashSet中添加元素a,首先调用元素a所在类的hashCode()方法,计算元素a的哈希值, 此哈希值接着通过某种算法计算出在HashSet底层数组中的...原创 2020-12-09 00:00:09 · 374 阅读 · 0 评论 -
集合-集合框架,list接口
集合框架二、集合框架 |----Collection接口:单列集合,用来存储一个一个的对象 |----List接口:存储有序的、可重复的数据。 -->“动态”数组 |----ArrayList、LinkedList、Vector |----Set接口:存储无序的、不可重复的数据 -->高中讲的“集合” |----HashSet、LinkedHashSet、Tr...原创 2020-12-08 02:31:38 · 145 阅读 · 0 评论 -
集合-迭代器的使用
1.内部方法hasNext() 查询集合是否有下一个元素和naxt()指针下移,将下移后位置的元素返回2.集合对象每次调用interator()方法都会得到一个全新的迭代器对象,默认游标都在集合的第一个元素之前。3.内部定义了remove(),可以在遍历的时候,删除集合中的元素。此方法不同于集合直接调用remove()。测试代码 public static void main(String[] args) { Collection collection=new Arra原创 2020-12-07 21:10:31 · 409 阅读 · 1 评论 -
Java基础部分的注解使用
1.Annocation的使用示例示例一:生成文档相关的注解/** * @Auther: tdongmu * @Date: 2020/12/7 1:20 * @Description:枚举类的学习 * */示例二:在编译时进行格式检查(JDK内置的三个基本注解)@Override:限定重写父类方法,该注解只能用于方法@Deprecated:用于表示修饰的元素(类,方法等)已过时。通常是因为修饰结构危险或存在更好的。@SupperessWarnings:抑制编译器警告。原创 2020-12-07 19:40:38 · 91 阅读 · 0 评论 -
枚举类
1.如何定义枚举类方式一:自定义枚举类public class Enumerate { //定义属性,用final修饰 private final String enumerateName; private Enumerate(String enumerateName){//私有化构造器,并初始化属性 this.enumerateName=enumerateName; } //提供当前枚举类的对象 public static fina原创 2020-12-07 02:40:48 · 240 阅读 · 0 评论 -
Java.until 中Data类的使用
1.两个构造器的使用构造器一:创建一个对应当前时间的对象Data data1=new Data();构造器二:创建指定毫秒数的Data对象Data data2=new Data(long型的一个时间戳);2.两个方法的使用toString():显示当前的年,月,日,时,分,秒。getTime():获取当前类的对象的时间戳 。...原创 2020-11-28 01:26:59 · 613 阅读 · 0 评论 -
StringBuffer和Stringbuilder类的使用
1.Stringbuffer,String,Stringbuilder的异同String:不可变字符序列;StringBuffer:可变字符序列;线程安全,但效率低;StringBuilder:可变字符序列;线程不安全,效率高;源码分析String str=new String();//底层new char[0];StringBuffer str1=newStringBuffer;//底层char[] value=new char[16];str1.append('a');//.原创 2020-11-28 01:10:23 · 132 阅读 · 1 评论 -
String类的使用
一,和字符串相关的类1.String类:1):String是一个final修饰的类,是不可以变的字符序列,不可被继承的 2):String对象是存储在一个char类型的数组里的 3):String实现了Serializable接口:表示字符串支持序列化。 实现了comparable接口:表示可以比较大小。 ...原创 2020-11-26 03:06:45 · 436 阅读 · 0 评论 -
单例设计模式,饿汉式和懒汉式
单例设计模式1.单例设计模式,就是在整个软件系统中,对某个类只能存在一个对象实例;2.如何实现(饿汉式)1)私有化类的构造器(不能在外面创建类的对象)2)内部创造静态对象3)提供公共静态方法,返回类的对象(可以直接用类名调用)创建代码//饿汉式class BankText{ private BankText() {//私有化类的构造器 } private static BankText instance=new BankText();//内部创造静原创 2020-11-21 01:07:58 · 152 阅读 · 1 评论 -
线程的生命周期,线程安全问题
线程的生命周期原创 2020-11-21 00:01:32 · 162 阅读 · 0 评论 -
多线程的创建,Thread中的主要方法介绍,线程优先级定义
多线程的创建方法一1.创建一个类继承thread类2.重写thread类的run()3.创建thread类的子类对象4.通过此对象调用start():1.启动当前线程。2.调用当前run()Thread类中主要方法* 1.start():启动当前线程,调用当前run()* 2.ren():通常要重写将创建线程的执行体放入其中* 3.currentTheard():返回当前执行当前代码的线程* 4.getName():获取当前线程名* 5.setName():修改当前线程名原创 2020-11-18 23:34:12 · 173 阅读 · 0 评论 -
Java链表练习题
题目1.逆序输出链表1->2->3->4->5print() 5 4 3 2 12.逆置链表1->2->3->4->5reverse() 5->4->3->2->13.查找单链表中倒数第K个元素4.合并两个有序的单链表,保证合并后的依然有序5.不允许遍历链表, 在 pos之前插入6.找两条相交链表的相交节点7.判断链表是否有环,有环输出环的入口节点,无环返回null题目分析与实现1.使原创 2020-11-15 18:40:03 · 480 阅读 · 0 评论 -
MySingleLinkedList,Java链表
MySingleLinkedList的实现public class MySingleLinkedList <T extends Comparable<T>>{ protected Node<T> head;//指向当前链表的第一个节点 public Node<T> getHead() { return head; } //自定义的节点类型 class Node<T>{ .原创 2020-11-15 17:27:46 · 121 阅读 · 0 评论 -
Java接口抽象类
1 抽象类1.1抽象类定义如果一个类中没有包含足够的信息来描绘一个具体的对象,我们把这种类定义为抽象类,1.2抽象类的特征1)不能用来实例化对象,所以抽象类必须被继承才能够被使用,其他的功能和普通类相同。2)一个类只能继承一个抽象类。3)抽象类修饰符不能是private4)抽象类不一定包含抽象方法,当抽象方法的类一定是抽象类。5)构造方法,类方法不能声明为抽象方法。6)抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非子类也是抽象类。2 接口2.1接口的定义原创 2020-10-29 00:15:15 · 400 阅读 · 1 评论 -
java异常的处理机制
1 异常的定义 在java中,组织当前当前方法或作用域的情况,称之为异常。编译器异常:最具有代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在的文件夹时,一个异常就发生了,这些异常在编译时不能被简单的忽略。运行期异常:运行期异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。错误:错误是脱离程序员控制的问题,错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译期也检查不到的。1.1异常的分类1.1...原创 2020-10-27 20:30:29 · 206 阅读 · 0 评论 -
Java继承和多态
1继承1.1继承的定义 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。super关键字:1)用于从派生类访问基类成员。2)派生类要调用基类的构造方法super(),只能在派生类的构造方法中调用,位于方法首行。3)调用基类已被其他方法重写的方法。4)访问基类的数据成员:super成员变量,super成员方法。1.2继承的特征1)继承关系是传递的。若C类继承B类,B类继承A类,则C类具有从B类.原创 2020-10-25 18:10:49 · 202 阅读 · 0 评论 -
函数重载和static关键字
*1.函数重载*相同作用域(同一个类),函数名相同,参数列表不同*this关键字:*·局部变量和实例变量产生命名冲突:this.name=name;*·thisthis()调用构造函数*注意点:a.必须位于当前有效代码第一行*b.构造函数之间不允许使用this()进行构造函数相互调用**2.static关键字解析*跟类有关系,一个类一份静态成员*静态变量...原创 2020-10-15 09:38:09 · 294 阅读 · 1 评论 -
JAVA类和对象;类的定义
类的定义public class People { //1. 属性 -> 实例变量/成员变量 private String name; private int age; //3. 构造函数 初始化 成员变量 public People(String name,int age){// this 指向当前对象 this.name = name; this.age = age; }//2. 行为 - > 实例方法...原创 2020-10-11 16:06:32 · 213 阅读 · 1 评论 -
冒泡排序与优化
冒泡排序思路:对一组是俩俩比较让大的数往后,进行多次(次数由具体数组决定)之后数组则会由小到大排列;//优化之前源代码package com.company;import java.util.Arrays;public class Main {public static void sequence(int[] arr){ //对数组所有数进行排序; for (int k=0;k<arr.length-1;k++){ for(int j原创 2020-10-04 16:17:21 · 77 阅读 · 0 评论 -
数组练习在数组{1,3,5,7}中添加一个数字6让数组有序{1,3,5,6,7}
源代码package javaexer;import java.util.Arrays;public class shuzuexercise {/*** 在数组arr中添加value* @param arr* @param value* NullPointerException null.*/public static int[] insert(int[] arr,int value){ if(arr == null || arr.length == ...原创 2020-09-27 11:52:41 · 265 阅读 · 0 评论 -
java一维数组
一,一维数组相同数据类型的集合一块连续的内存空间二,定义1.int[] arr={1,2,3,4,5}2.int[] arr=new int[]{1,2,3,4,5}3.int arr=new int[100]三,遍历方式1.for循环for(int i=0;i<arr.length;i++){System.out.println(arr[i]);}2.System.out.println(Arrays.toString(arr));3.foreac原创 2020-09-26 14:23:08 · 97 阅读 · 0 评论 -
break和continue
break和continue关键字的使用 使用范围 循环中的作用 相同点break; 循环结构中 结束当前循环 之后不能声明执行语句continue; 循环结构中 结束全部循环 之后不能声明执行语句...原创 2020-09-24 15:38:40 · 110 阅读 · 0 评论 -
while和do……while循环结构
1.while循环结构初始化条件;while(循环条件){迭代条件;执行语句;}while和for循环可以互相转换。2.do……while循环结构初始化条件do{迭代条件;执行语句;}while(循环条件);do……...原创 2020-09-24 15:38:11 · 257 阅读 · 0 评论 -
求水仙花数
一个三位数的个位,十位,百位的立方的和是自己本身则为水仙花数例如:153=1*1*1+5*5*5+3*3*3.源代码:package javaexer;public class forexer3 { public static void main(String[] agr) { for(int i=100;i<1000;i++) { int h=i/100;//取三位数的百位 int t=(i%100)/10;//...原创 2020-08-22 01:32:13 · 341 阅读 · 1 评论 -
for循环练习1
输入两个正整数m和n,求最大公约数和最小公倍数。package javaexer;import java.util.Scanner;public class forexer2 { public static void main(String[] agr) { Scanner scan=new Scanner(System.in); System.out.println("请输入第一个整数"); int num1=scan.nextInt();...原创 2020-08-22 01:09:41 · 235 阅读 · 0 评论 -
Java的循环结构
循环语句的四个组成部分初始化部分循环条件部分循环体部分迭代部分for(初始化部分;循环条件部分;迭代部分){循环体部分}原创 2020-08-21 23:31:46 · 113 阅读 · 0 评论 -
switch的练习1
使用switch将小写的char型转换为大写,只转换a,b,c,d,e,其余的输出other。package javaexer;import java.util.Scanner;public class switchexer1 { public static void main(String[] agr) { Scanner scanner=new Scanner(System.in); System.out.println("请输入一个字母"); ...原创 2020-08-21 04:16:55 · 294 阅读 · 0 评论 -
swicth的使用方法
1.格式switch(表达式){case 常量1: 执行语句1;//break;case 常量2: 执行语句2;//break;……………………default:执行语句n;}2.说明(1)根据switch表达式的值依次匹配case常量的值,一旦成功则进入相应case结构中的执行语句,当执行完之后仍然向下执行其他case执行语句直到遇到break或者运行完为止(2)switch中的表达式可以为六种:byte,short,char,...原创 2020-08-21 03:54:26 · 784 阅读 · 0 评论 -
ifelse练习彩票问题
源代码:package javaexer;import java.util.Scanner;public class doublecoloredbulb { public static void main(String[] agr) { Scanner scanner=new Scanner(System.in); int oneprice=(int)(Math.random()*90+10); System.out.println("请输...原创 2020-08-21 02:53:22 · 404 阅读 · 0 评论 -
ifelse练习3
狗的年龄是在前两岁相当于人的10.5岁,之后每岁相当于人的四岁,编写一个程序输入狗的年龄输出相当于人的岁数。package javaexer;import java.util.Scanner;public class ifexer3 { public static void main(String[] agr) { Scanner scanner=new Scanner(System.in); System.out.println("请输入狗的年龄:"); d...原创 2020-08-21 01:31:11 · 154 阅读 · 0 评论 -
ifelse嵌套练习
题目:输入三个整数,由小到大输出。package javaexer;import java.util.Scanner;public class ifelseexer2 { public static void main(String[] agr) { Scanner scanner=new Scanner(System.in); System.out.println("请输入第一个整数:"); int num1=scanner.next...原创 2020-08-21 00:43:09 · 476 阅读 · 0 评论 -
if,else练习
package javalianxi;import java.util.Scanner;public class exer { public static void main(String[] agr) { Scanner scan=new Scanner(System.in); System.out.println("请输入成绩:"); double score=scan.nextDouble(); if(score==10...原创 2020-08-20 23:19:39 · 194 阅读 · 0 评论 -
Scanner的使用方法
Scanner的使用方法1.导包:import java.util.Scanner;2.Scanner的实例化,Scanner scan=new Scanner(System in);3.调用Scanner的类方法(next()/nextXxx()),获取指定变量。String name=Scan.next();int age=Scan.Int();原创 2020-08-20 02:21:51 · 209 阅读 · 0 评论 -
day4练习题
1.用if,else实现求三个数中的最大值。public class max { public static void main( String[] agr) { int c1=2; int c2=8; int c3=4; int max=0; if(c1>=c2&&c1>=c3) { max=c1; } else i...原创 2020-08-20 00:44:13 · 96 阅读 · 0 评论