java基础
qq_43145601
这个作者很懒,什么都没留下…
展开
-
java笔记
计算机是使用二进制java开发环境:安装jdk1.8,且配置环境变量。Java_Home(安装路径) Path(安装路径)测试安装成功:java -version javac java单行注释:// 多行注释:/**/基本数据类型:byte,short,char,int引用数据类型:String字符串,eum枚举定义一个方法:public static void 方...原创 2020-03-18 23:09:04 · 82 阅读 · 0 评论 -
二分法查询元素下标
public class ArrayUtil {public static void main(String[] args) {//这是int类型数组的对象int[] arr = {9, 8, 10, 7, 6, 87, 11};//找出arr这个数组中87所在下标//调用方法int index = binarySearch(arr, 87);System.out.println(index == -1 ? “该元素不存在” : “该元素的下标” + index);}/** * 从数.原创 2020-10-26 18:57:11 · 228 阅读 · 0 评论 -
数组元素的查找
import java.util.Arrays;/** *数组元素的查找 * s数组元素查找有2种方式 * 1、一个一个挨着找,直至找到为止 * 2、二分法查找(算法),这个效率高 */public class test { public static void main(String[] args) { //这是int类型数组的对象 int[] arr = {9, 8, 10, 7, 6, 87, 11}; //需求:找出87的下标,原创 2020-10-26 18:46:04 · 972 阅读 · 0 评论 -
选择排序
选择排序:每一次从这堆“参与比较的数据中”找出最小值拿着这个最小值和“参与比较的这堆最前面的元素”交换位置选择排序比冒泡排序好在:每一次的交换位置都是有意义的选择排序要比冒泡排序的效率高import java.util.Arrays;/** * 冒泡排序算法 * 原始数据:3,2,7,6,8 * 第一次循环:2,3,7,6,8(2和3比较,大的放右边) * 第二:2,3,6,7,8(3和6比较,大的放右边) * 第三次:2,3,6,7,8(6和7比较,大的放右边) * 第四次:2原创 2020-10-26 18:22:16 · 92 阅读 · 0 评论 -
冒泡排序
import java.util.Arrays;/** *冒泡排序算法 * 原始数据:3,2,7,6,8 * 第一次循环:2,3,7,6,8(2和3比较,大的放右边) * 第二:2,3,6,7,8(3和6比较,大的放右边) * 第三次:2,3,6,7,8(6和7比较,大的放右边) * 第四次:2,3,6,7,8(7和8比较,大的放右边) * * */public class test { public static void main(String[] args) { .原创 2020-10-26 17:59:00 · 117 阅读 · 0 评论 -
Arrays类
java.utils.Arrays是一个工具类其中有一个sort()方法。可以排序。静态方法,直接使用类名调用import java.util.Arrays;public class test { public static void main(String[] args) { int [] a={1,23,54,76,21,13}; //Arrays类中方法大部分是静态的 Arrays.sort(a); //遍历原创 2020-10-26 17:58:13 · 80 阅读 · 0 评论 -
获取Class3种方法
获取Class3种方法 1、Class c=Class.forName(“完整类名带包名”);2、Class c=对象.getClass();3、Class c=任何类型.class;import java.util.Date;/** * 要操作一个类的字节码,首先获取这个类的字节码,怎么获取java.lang.Class实例? * 3种方式 */import java.util.Date;/** * 要操作一个类的字节码,首先获取这个类的字节码,怎么获取java.lang.Cl原创 2020-10-26 00:19:20 · 456 阅读 · 0 评论 -
反射机制
反射机制作用:1、通过java语言中的反射机制可以操作字节码文件。优点:类似于黑客(可以读和修改字节码文件)通过反射机制可以操作代码片段(class文件)2、反射机制的相关类的在哪个包下?java.lang.reflect.*3、反射机制相关的类有哪些?java.lang.Class:代表字节码文件------>代表整个类java.lang.reflect.Method:代表字节码中的方法字节码------->代表类中的方法java.lang.reflect.Construc原创 2020-10-24 22:27:59 · 72 阅读 · 0 评论 -
wait和notify概念
wait和notify是Object自带的,不是线程中的方法wait()作用Object o=new Object();o.wait();让该对象上的线程进入等待的状态notify()作用Object o=new Object();o.notify();唤醒该对象上的等待的所有线程原创 2020-10-24 17:30:09 · 145 阅读 · 0 评论 -
定时器作用
定时器Timer作用间隔特定时候,执行特定的程序。每周要进行银行的账户的总帐操作。每天要进行数据的备份操作。在实际的开发中,每隔多久就执行一段特定的程序。这种需求很常见,那么在java中其实可以采用多种的方式实现:1.可以采用睡眠,sleep(),比较low2.在java类库中已经写好了定时器,java.util.Timer.可以拿来用,用的少,很多高级框架都是支持定时任务的。如:spring框架中提供了SpringTask框架/** * 使用定时器Timer指定定时任务 */publ原创 2020-10-24 17:00:56 · 1190 阅读 · 0 评论 -
守护线程
java语言中,线程分为:用户线程和守护线程(后台线程)具有代表性是:垃圾回收线程(守护线程)守护线程特点:一般守护线程是一个死循环,所有的用户线程只要结束,守护线程自动结束注意:主线程main方法是一个用户线程守护线程用在什么地方?每天0点系统数据自动备份。这个时候需要定时器,并且我们可以将定时器设置为守护线程。/** * 守护线程 */public class test { public static void main(String[] args) { T原创 2020-10-24 16:40:38 · 78 阅读 · 0 评论 -
开发中怎么解决线程安全问题
是一上来就选择线程同步机制吗?syncharonized不是,syncharonied会让程序执行效率低,用户体验不好。系统的用户吞吐量降低。用户的体验差,在不得已情况,再选择线程同步机制。第一种方案:尽量使用局部变量,代替实例变量和静态变量。第二种方案:如果必须是实例变量,那么可以考虑创建多个对象,这样实例变量的内存就不共享了(一个线程对应一个对象,100个对象对应100个对象,对象不共享,就没有数据安全问题了)第三种方案:如果不使用局部变量。对象也不能创建多个。这个时候,就只能选择synchar原创 2020-10-24 16:17:57 · 207 阅读 · 0 评论 -
synchronized面试题
1、doSome方法执行需要等待dother方法执行吗不需要package com;class test { public static void main(String[] args) thorows InterruptedExcption { //创建对象 MyClass mc = new MyClass(); //创建线程对象 MyThread m = new MyThread(mc); MyThread原创 2020-10-23 13:08:38 · 355 阅读 · 0 评论 -
synchronized3种写法
方法1 //取款的方法 public synchronized void withdraw(double money) { //这几行代码线程排队,不能并发 //取款之前的余额 /** *缺点:效率低,只能是this,不能是其他对象。不灵活 优点:代码少,节俭 */ //这里共享对象是Account------>this double before = this.getBal原创 2020-10-23 12:27:47 · 411 阅读 · 0 评论 -
哪些变量存在安全问题
哪些变量存在安全问题java3大变量:1、实例变量:堆内存 2、静态变量:在方法区3、局部变量:在栈内存以上3大变量中:局部变量永远都不会存在线程安全问题因为局部变量不共享。(一个线程一个栈)局部变量在栈中。所以局部变量永远都不会共享实例变量在堆中,堆只有一个静态变量在方法区,方法区只有一个堆和方法区都是线程共享的,所以可能存在线程的安全问题。...原创 2020-10-23 11:58:19 · 242 阅读 · 0 评论 -
常用注解@含义
@ResponseBody:java对象转为json格式的数据。@RequestBody:注解实现接收http请求的json数据,将json数据转换为java对象@RestController:@Controller和@ResponseBody的组合,Restful风格@Param:1、xml里面sql使用了if标签test要加@Param2、在方法里给参数起别名@RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作原创 2020-10-22 22:16:35 · 368 阅读 · 0 评论 -
模拟取款
编写程序模拟2个线程同时对同一个账户进行取款操作package com;/** * 银行账户 * 不使用线程同步机制,多线程对同一个账户进行取款,出现线程安全的问题。 */class Account { //账户 private String actno; //余额 private double balance; public String getActno() { return actno; } public voi原创 2020-10-22 14:50:40 · 279 阅读 · 0 评论 -
线程安全是重点
线程安全是重点为什么是重点?以后开发中,我们项目是运行在服务器中,而服务器已经将线程的定义,线程的创建,线程启动等,dd偶已经实现了,我们不需要编写。我们关注的是在多线程并发的环境下,是否安全的(重点)多线程并发对同一个账户进行取款...原创 2020-10-22 11:11:47 · 175 阅读 · 0 评论 -
js点击事件
js点击事件<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript" src="jquery-3.4.1.min.js"></script> <script> function test(){ alert("js事件")原创 2020-10-22 10:46:27 · 534 阅读 · 0 评论 -
线程的sleep方法
关于sleep();static void sleep (long millis)1、静态方法:Thread.sleep(1000);2、参数是毫秒3、作用是:让当前的线程进入休眠,进入”阻塞状态“,放弃占用cpu时间片,让其线程使用。这行代码出现A线程中,A线程就会进入休眠这行代码出现B线程中,B线程就会进入休眠。*4、Thread.sleep方法的效果:*间隔特定时间,去执行一段特定的代码,每隔多久去执行一次。package com;/** * 关于sleep(); * s原创 2020-10-21 20:12:00 · 1743 阅读 · 0 评论 -
获取线程的名字、对象
package com;/** * 1、怎么获取当前线程对象 * 2、获取线程对象的名字 * String name= 线程对象.getName(); * 3、修改线程对象的名字 * 4、线程对象.setName("线程名字"); * 当线程没有名字时候,默认Thread-0 * */public class Test { public static void main(String[] args) { ThreadTest01 t=new ThreadTe原创 2020-10-21 19:59:39 · 224 阅读 · 0 评论 -
线程的生命周期
线程的生命周期新建状态就绪状态运行状态堵塞状态死亡状态原创 2020-10-21 19:30:22 · 64 阅读 · 0 评论 -
实现线程(3种方法)
实现线程1.第一种方式:编写一个类,直接继承java.lang.Thread,重写run方法package com;import java.io.*;public class Test { public static void main(String[] args) throws IOException { //这里是main方法。这里代码是属于主线程,在主栈中运行。 //新建一个分支线程对象 MyThread myThread = ne原创 2020-10-21 19:14:20 · 428 阅读 · 0 评论 -
分析以下程序:有几个线程
package com;import java.io.*;import java.util.Properties;/** * 分析以下程序:有几个线程。除垃圾回收线程,有几个线程 * 1个线程。因为程序只有一个栈 *main begin * m1 begin * m2 begin * m3 begin * m3 over * m2 over * m1 over * main over */public class Test { public static void原创 2020-10-21 17:53:27 · 147 阅读 · 0 评论 -
多线程
多线程1.什么是进程?什么是线程?进程是一个应用程序(一个进程是一个软件)线程是一个进程中的执行单元。一个进程可以启动多个线程。2.对于java程序来说,当 在DOS命令窗口输入:java HelloWorld 回车后,会先启动jvm,而jvm就是一个进程。jvm再启动一个主线程调用main方法。同时再启动一个垃圾回收线程负责看护,回收垃圾。最起码 现在的java程序中至少有2个线程并发,一个是垃圾回收线程,一个是执行mian方法的主线程...原创 2020-10-20 17:36:45 · 200 阅读 · 0 评论 -
OI+Properties联合使用
OI+Properties文件不需要改,不需要编译,服务器不需要重启,就可以拿到动态的信息建议使用.properties结尾,这种文件称为属性配置文件package com;import java.io.*;import java.util.Properties;/** * 一次序列化多个对象 * 可以,可以将对象放在集合,序列化集合 */public class Test { public static void main(String[] args) throws I原创 2020-10-20 17:23:04 · 91 阅读 · 0 评论 -
序列化和反序列化
序列化和反序列化的理解Serializable1、java.io.NotSerializableException,没有实现Serializable2、参与序列化和反序列化接口必须实现Serializable接口3、public interface Serializable {}里面什么都没有,可能起到标识、标志作用,可能会对这个类特殊待遇4、Serializable 这个标志接口,是给java虚拟机参考的,java虚拟机看到这个接口后,会为这个类自动生成一个序列胡版本号...原创 2020-10-20 16:05:07 · 85 阅读 · 0 评论 -
目录拷贝
目录拷贝package com;import java.io.*;/** * 拷贝目录 */public class CopyAll { public static void main(String[] args) { //拷贝源 File srcFile = new File("D:\\test.txt"); //拷贝目标 File destFile =new File("D:\\a"); //调用方法原创 2020-10-20 15:44:43 · 166 阅读 · 0 评论 -
标准输出流
标准输出流package com;import java.io.*;public class test { public static void main(String[] args) throws FileNotFoundException { //联合起来写 System.out.println("HelloWorld"); //分开写 PrintStream ps = System.out; ps.pri原创 2020-10-19 11:17:39 · 297 阅读 · 0 评论 -
数据流
数据流package com;import java.io.*;/** * java.io.DataOutputStream:数据专属的流。 * 这个流可以将数据和数据类型一并写入文件 * 注意:这个文件不是普通文本文档,(用记事本打不开) */public class test { public static void main(String[] args) { //带有缓存区的字符输出流 DataOutputStream dos = null;原创 2020-10-19 11:17:08 · 331 阅读 · 0 评论 -
BufferedWriter写入
带有缓存区的字符输出流BufferedWriter:带有缓存的字符输出流。package com;import java.io.*;/** * BufferedWriter:带有缓存的字符输出流。 */public class test { public static void main(String[] args) { //带有缓存区的字符输出流 BufferedWriter out = null; try {原创 2020-10-19 11:16:44 · 709 阅读 · 0 评论 -
字节流和包装流文本内容读取
字节流和包装流文本内容读取package com;import java.io.*;public class test { public static void main(String[] args) { //字节流 // FileInputStream in = null; BufferedReader br = null; try { /* in = new FileInputStream("myb原创 2020-10-18 21:42:32 · 198 阅读 · 0 评论 -
BufferedReader
BufferedReaderpackage com;import java.io.*;/** * BufferedReader: * 带有缓冲区的字符输入流。 * 使用这个流时候,不需要自定义char数组,或者说不需要自定义byte数组。自带缓冲 */public class test { public static void main(String[] args) { BufferedReader br = null; FileReader re原创 2020-10-18 21:28:06 · 740 阅读 · 0 评论 -
FileReader+FileWriter文本拷贝
FileReader+FileWriter:FileWriter+FileReader进行拷贝,只能拷贝“普通文本”文件package com;import java.io.*;/** * FileWriter+FileReader进行拷贝,只能拷贝“普通文本”文件: */public class test { public static void main(String[] args) { FileWriter out = null; FileRe原创 2020-10-18 21:04:02 · 157 阅读 · 0 评论 -
FileReader、FileWriter
FileReader文件字符输入流,只能读取普通文本读取文本内容,比较方便,快捷package com;import java.io.*;/** * FileReader: * 文件字符输入流,只能读取普通文本 * 读取文本内容,比较方便,快捷 */public class test { public static void main(String[] args) throws IOException { FileReader reader = null;原创 2020-10-18 20:49:54 · 82 阅读 · 0 评论 -
文件的拷贝
文件的拷贝FileOutputStream+FileInputStream组合完成文件拷贝拷贝过程是:一边读,一边写使用以上的字节拷贝文件时候,文件类型随意,万能的。什么样的文件都标可以拷贝。package com;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;/** * F原创 2020-10-18 20:26:33 · 113 阅读 · 1 评论 -
FileOutputStream写入
FileOutputStream1、write();写入2、构造器加true,写入前的内容不会清空package com;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;public class test { public static void main(String[] args) { FileOutputStrea原创 2020-10-18 20:08:32 · 567 阅读 · 0 评论 -
FIleInputStream循环读
package com;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;public class test { public static void main(String[] args) { FileInputStream fis = null; try { //D:\test.txt---原创 2020-10-18 17:12:08 · 768 阅读 · 0 评论 -
IO流介绍
lo流,什么是Io?I:InputO:OutputIO流分类:1.按照流的方向分类:以内存作为参照物往内存中去,叫做输入(Input)。或者叫读(Read)。从内存中出来,叫做输出(Output)。或叫做写(Write)。2.按照读取数据方式不同进行分类:有的流按照字节的读取数据,一次读取1个q字节byte,等同于一次读取8个二进制位。这种流是万能的,什么类型的文件都可以读取。包括: 文本文件,图片,声音文件,视频文件等。假设文件file.txt,采用字符流是这样读的:a中国bc张三原创 2020-10-18 12:29:17 · 177 阅读 · 1 评论 -
集合总结
集合主要掌握的内容:1.每个集合对象的创建(new)2.向集合中添加元素3.从集合中取出某个元素4.遍历集合5.主要的集合类:ArrayListLinkedListHashSetTreeSetHashMapPropertiesTreeMap原创 2020-10-17 21:14:43 · 209 阅读 · 0 评论