Java基础
文章平均质量分 82
沐雨花飞蝶
这个作者很懒,什么都没留下…
展开
-
Java中使用正则表达式
在使用正则表达式时,可以通过指定匹配模式和修饰符来实现不同的匹配需求。正则表达式是一种强大的文本处理工具,掌握它可以提高文本处理的效率和灵活性。在实际应用中,可以根据具体的需求来编写和调试正则表达式,以实现各种复杂的文本操作。正则表达式的基本语法包括普通字符和特殊字符的组合。以上只是正则表达式在Java中的一些基本用法,正则表达式的语法非常丰富和强大,可以实现更复杂的字符串操作。除了以上基本语法外,正则表达式还支持一些元字符和特殊序列,用于匹配特定的字符类别或位置。原创 2023-10-30 23:43:37 · 372 阅读 · 1 评论 -
JVM调优常用参数
Xms:初始堆大小-Xmx:最大堆大小-Xmn:新生代大小-Xss:线程堆栈大小,默认为1M-XX:MaxPermSize=n:设置持久代大小-XX:NewRatio:新生代和老年代的比例-XX:SurvivorRatio:Eden区和Survivor区的比例。原创 2023-10-30 23:42:55 · 148 阅读 · 0 评论 -
Java中的volatile关键字
由于JAVA共享变量是存储在主内存中,而JAVA线程是无法直接访问主内存数据,只能把主内存的数据拷贝一份副本,修改完本地内存的数据,再写回主内存,而此时另一个线程也把主内存的数据拷贝到自己私有的本地内存中,虽然线程1已经修改了主内存数据,但线程2却无法感知到,所以就出现了内存可见性问题。在数据库中,原子性也是一个重要的概念。总结起来,"volatile"关键字用于修饰变量,告诉编译器该变量可能会在意料之外的时候被修改,从而禁止对该变量进行某些优化,确保每次访问变量时都会从内存中读取最新的值。原创 2023-10-28 22:23:23 · 221 阅读 · 0 评论 -
JVM内存线程Dump
Thread Dump文件记录了JVM中所有线程的当前状态和堆栈信息,包括线程的名称、状态、优先级以及线程所执行的方法和代码行数。生成Heap Dump文件后,可以通过分析文件来查看当前内存中的对象信息,包括对象的数量、大小、引用关系等。通过分析这些信息,开发人员可以了解线程的执行情况,找出可能的死锁、死循环等问题。在分析堆栈跟踪信息时,可以关注线程的状态、调用栈中的方法和行号,以及可能存在的锁信息等。是Java虚拟机(JVM)的一个命令行工具,用于生成Java堆的内存映像文件和查看Java堆的详细信息。原创 2023-10-01 02:36:41 · 303 阅读 · 0 评论 -
Java集合处理Stream流使用解析
它提供了丰富的工具和资源,用于处理文本数据,包括分词、词性标注、句法分析、语义分析、情感分析等。NumPy(Numerical Python)是一个开源的Python科学计算库,它提供了高效的多维数组对象和用于处理这些数组的工具。使用Scrapy,你可以定义一个爬虫,指定要爬取的网站和相应的规则,然后Scrapy会自动帮你下载网页、解析数据,并将其保存到你指定的位置。它提供了一种简单而灵活的方式来构建和发送自定义的网络数据包,并且可以用于网络协议的研究、网络安全测试和网络流量分析等领域。原创 2023-09-30 03:02:33 · 159 阅读 · 0 评论 -
Jetpack生命周期感知组件ViewModel
ViewModel是一种用于存储和管理与UI相关的数据的类,它的生命周期与Activity或Fragment的生命周期无关,因此可以在多个Fragment之间共享数据。当Activity重建时,ViewModel保存的数据没有丢失的原因是ViewModel的生命周期与Activity的生命周期不同步。这样可以确保数据的持久性,并且不会因为配置变化而丢失。当Fragment被销毁时,ViewModel的实例会被保留,下次再创建相同的Fragment时,可以通过ViewModel的实例来获取之前保存的数据。原创 2023-09-28 01:14:45 · 347 阅读 · 0 评论 -
(三十九)、RandomAccess,对象流,数据流
RandomAccess类RandomAccessFile类可以说是Java语言中功能最为丰富的文件访问类,它提供了众多的文件访问方法。RandomAccessFile类支持“随机访问”方式,可以跳转到文件的任意位置处读写数据。在要访问一个文件的时候,不想把文件从头读到尾,而是希望像访问一个数据库一样地访问一个文本文件,这时,使用RandomAccessFile类就是最佳选择。 RandomAcc原创 2016-08-22 20:00:37 · 343 阅读 · 0 评论 -
(三十八)、内存流和打印流
内存流什么是内存流当输出流的目的地,和输入流的源是内存时,这样的流称之为内存流。常用内存流ByteArrayInputStreamByteArrayOutputSteampublic class ByteArrayInputStreamDemo { public static void main(String[] args) throws IOException { B原创 2016-08-22 19:37:37 · 436 阅读 · 0 评论 -
(三十五)、File类
File类概述1、 文件可认为是相关记录或放在一起的数据的集合。文件一般存放在存储介质上:硬盘、u盘、光盘、软盘(1.44M)、云盘等。 2、 java.io.File 类是专门对文件进行操作的类。(只能对文件本身进行操作,不能对文件内容操作) 3、 File类是“文件和目录路径名的抽象表示”。 而不是指文件的内容(IO)。 4、 File类定义了一些与平台无关的方法操作,如:创建、删原创 2016-08-18 20:52:53 · 366 阅读 · 0 评论 -
(三十四)、异常
异常的概念异常是程序在运行期发生的不正常的事件,它会打断指令的正常执行流程。 设计良好的程序应该在异常发生时提供处理这些不正常事件的方法,使程序不会因为异常的发生而阻断或产生不可预见的结果。Java语言使用异常处理机制为程序提供了异常处理的能力异常的分类(从编程角度)非受检(unchecked)异常(运行时异常 RuntimeException):编译器不要求强制处置的异常。一般是指编程时的逻辑原创 2016-08-18 20:37:08 · 248 阅读 · 0 评论 -
(三十三)、Map接口
Map接口概述1、 实现Map接口的集合类用来存储“键-值”映射对。 //key value 2、 Map实现类中存储的“键-值”映射对是通过键来唯一标识,Map底层的“键”是用Set来存放的。 3、 映射Map每个元素含有两个部分:名称(key)和值(value)。其中key不得重复,所以它可以组成一个Set,而value部分可以重复可以组成一个List。 4、 如果将Key=Va原创 2016-08-16 21:11:00 · 251 阅读 · 0 评论 -
(三十二)、Set接口
集合特点Set接口没有提供Collection接口额外的方法,但实现Set接口的集合类中的元素是不可重复的。总结: 无序不可重复常用实现类HashSet实现原理:实现Set接口的集合存储对象时: 1、 根据每个对象的哈希码值(调用hashCode()获得)用固定的算法算出它的存储索引,把对象存放在一个叫散列表的相应位置(表元)中: a存对象时,集合首先调用该对象的hashCode方法来原创 2016-08-16 20:31:45 · 280 阅读 · 0 评论 -
(三十一)、List接口
List接口List集合特点:有序可重复1、 实现List接口的集合类中的元素是有序的,且允许重复。 2、 List集合中的元素都对应一个整数型的序号记载其在集合中的位置(每个元素都有索引),可以根据序号存取集合中的元素。 3、 List集合不仅支持Iterator还支持List集合专用迭代器ListIterator(双向迭代器)相比Collection新增方法List接口比Collect原创 2016-08-16 20:10:36 · 224 阅读 · 0 评论 -
(三十)、Collection接口
Collection接口理解Collection接口-定义了存取对象的方法。两个非常常用的子接口: List接口:存放的元素有序且允许有重复的集合接口。Set接口:存放的元素无序不包含重复的集合接口,所有的重复内容是靠hashCode()和euqals()两个方法区分的。 说明: “元素”-对象,实例 “重复”-两个对象通过equals相等。 “有序”-元素存入的顺序与取出的顺序相同。原创 2016-08-13 20:40:16 · 250 阅读 · 0 评论 -
(二十九)、集合框架
集合框架数组的缺点: 1.长度固定,没有办法改变数组长度。 2.数组的长度很多时候无法满足具体需求 3.删除和添加数据比较麻烦java为了克服数组的缺点,设计了一个集合框架 最大优点:动态调整集合的容量 集合只能存储对象,不能存基本数据类型 ==如果需要存入基本数据类型,就要使用这些基本数据类型的包装类== Collection stu = new Arra原创 2016-08-13 20:29:54 · 406 阅读 · 0 评论 -
(四十)、内部类
内部类内部类的定义将一个类定义在另一个类的里面,对于里面那个类就称为内部类(内置类,嵌套类)。 例如:如果在类Outer的内部再定义一个类Inner,此时Inner就称为Outer的内部类,而Outer则称为Inner的外部类。内部类语法格式标识符 class 外部类的名称{ //外部类的成员 标识符 class 内部类的名称{ //内部类原创 2016-08-23 10:22:20 · 249 阅读 · 0 评论 -
(四十一)、设计模式
设计模式设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。单例设计模式构造方法私有,提供创建对象的方法,保证对象单一懒汉式调用时才会创建对象//懒原创 2016-08-23 19:52:36 · 319 阅读 · 0 评论 -
(三十七)、字符流与转换流
字符流字符输入流ReaderDemo:public class ReaderDemo { public static void main(String[] args) { FileReader reader = null; FileWriter writer = null; try { reader = new File原创 2016-08-22 19:14:59 · 231 阅读 · 0 评论 -
(三十六)、IO流
IO流IO指的是Input/Output,IO流:输入输出流。 统称为数据流。(IO Stream) 在Java程序中,对于数据的输入 / 输出操作以流的方式进行;流是从起源到接收的有序数据。JDK提供了各种各样的流类,用以获取不同种类的数据;流的作用对文件进行读写操作流的分类按流向分输入流 读取数据的流输出流 写入数据的流按功能分节点流 直接操作目标的流处理流 是对一个已存在的原创 2016-08-19 20:58:30 · 311 阅读 · 0 评论 -
(一)、开始学习
一.环境变量的配置:path 告诉系统我们要执行的命令或者工具所在的位置 JAVA_HOME 配置的是jdk的根目录二.标识符命名规则: 1.数字、字母、下划线_、美元符$ 2.不能以数字开头 3.区分大小写 4.长度无限制,但是一般不要超过15个字符 5.不能使用关键字和保留字命名规范: 1.类、接口 每个单词首字母大写 2.变量和方法 第原创 2016-08-06 10:35:54 · 269 阅读 · 0 评论 -
URL类和HttpUrlConnection
URL类统一资源定位符(Uniform Resource Locator)是对可以从互联网上 得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资 源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息 指出文件的位置以及浏览器应该怎么处理它(网上某个资源的地址)常用方法URL url = new URL(“http://www.baidu.com/…”);注意要有协议名,否则原创 2017-03-04 22:35:30 · 350 阅读 · 0 评论 -
(四十五)、HTML and Servlet
HTMLHTML的概念HTML(Hyper Text Markup Language 超文本标识语言 ) 是一种用来制作超文本文档的简单标记语言。用HTML编写的超文本文档称为HTML文档。 HTML 文件是包含一些标签的文本文件。 这些标签告诉 WEB 浏览器如何显示页面。 HTML 文件必须使用 htm 或者 html 作为文件扩展名。HTML文档结构<html> <head原创 2016-08-27 19:48:15 · 936 阅读 · 0 评论 -
Java中String.format()的用法
Jave中String.format()的用法1、转换符%s: 字符串类型,如:"lzl"%b: 布尔类型,如:true%d: 整数类型(十进制),如:99%f: 浮点类型,如:99.99%%: 百分比类型,如:%%n: 换行符Demo:public void test1(){ String str=null; str=String.format("Hi, %s", "林志玲")原创 2016-12-26 16:38:31 · 803 阅读 · 0 评论 -
(四十四)、网络基础与TCP,UDP协议
计算机网络基础知识通讯协议协议protocol:通信双方必须遵循的规矩网络通信协议:网络协议是构成网络的基本组件之一,协议是若干规则和协定的组合。网络通信协议是分层的:一般指A机器的第n层与B机器的第n层的对话,这种对话中所使用的若干规则和约束便称为第n层网络协议。TCP/IP协议在Internet中TCP/IP协议是使用最为广泛的通讯协议(互联网上的一种事实的标准)。TCP/IP是英文Tr原创 2016-08-25 20:42:31 · 668 阅读 · 0 评论 -
(四十三)、线程的同步和线程池
线程的同步同步代码块synchronized放在对象前面限制一段代码的执行同步代码块定义语法:synchronized(对象){需要同步的代码;}class TicketOffice implements Runnable { private int tickets = 10; public void run() { while (true) {原创 2016-08-24 20:01:06 · 1091 阅读 · 0 评论 -
(四十二)、多线程
进程的概念每个独立执行的程序称为进程 进程是程序的一次动态执行过程,它经历了从代码加载、执行到执行完毕的一个完整过程,这个过程也是进程本身从产生、发展到最终消亡的过程。多进程操作系统能同时运行多个进程(程序),由于CPU具备分时机制,所以每个进程都能循环获得自己的CPU时间片。由于CPU执行速度非常快,使得所有程序好象是在“同时”运行一样。 在操作系统中进程是进行系统资源分配、调度和管理的原创 2016-08-23 20:11:55 · 327 阅读 · 0 评论 -
(二十八)、接口
概念抽象类可以理解为是从多个类中抽象出来的模板,不但允许有抽象方法,还可以有变量和普通方法等。如果抽象的更彻底,只留下常量和抽象方法,则此时的抽象类有了新的名字:接口。从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含静态常量和方法的定义,而没有变量和方法的实现。接口是抽象方法和静态常量的集合! public interface Pet { public static原创 2016-08-13 11:11:14 · 300 阅读 · 0 评论 -
(二十七)、枚举类
枚举类类一旦创建,则这个类的个数就确定了 public enum 类名{ }特点: 1.枚举类也是一个类,限制了这个类对象的个数 2.必须在首行声明这个类有哪些对象 3.构造方法一定是私有 4.可以有抽象方法,在定义对象时,需实现抽象方法demo:Season.javapublic enum Season {原创 2016-08-12 19:42:13 · 352 阅读 · 0 评论 -
(二十六)、正则表达式
正则表达式正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。字符串使用正则表达式1.matches(String regex) 告知此字符串是否匹配给定的正则表达式。2.replaceAll(String regex, String replacement) 使用给定的 repla原创 2016-08-12 19:30:06 · 356 阅读 · 0 评论 -
(小案例)数组应用:实现学生管理系统
数组实现学生管理系统 学生信息管理系统 1.可以添加学生信息 2.可以修改学生信息 3.可以删除学生信息 4.可以统计学生人数 5.可以统计每个学科的总分,平均分。。。 School类:public class School { /** * 代表这所学校所能容纳的最多学生 */ int capacity = 100;原创 2016-08-07 12:31:47 · 2420 阅读 · 2 评论 -
(十一)、数组的简单操作
数组的简单操作冒泡排序法public class Demo3 { public static void main(String[] args) { // 从一个给定的数组中找出最大值最小值 int[] arr = { 4, 50, 8, 9, 88, 77, 99, 51, 25 }; int max = arr[0]; int原创 2016-08-06 21:08:09 · 219 阅读 · 0 评论 -
(十)、数组
数组数组也是一种对象 1.数组声明:数据类型[] 数组名 2.数组的创建:new 数据类型[数组长度] 3.访问数组,需要用到数组下标(index,索引),从0开始。最后一个元素:长度-1 4.数组对象一旦创建出来,每个元素也有默认值 5.不太推荐的声明方式: 数据类型 数组名[] 6.数组长度一旦确定,不能改变原创 2016-08-06 20:56:07 · 287 阅读 · 0 评论 -
(九)、面向对象初步
面向对象初步默认值: 数字类型默认值:0 boolean默认值:false 引用数据类型默认值:null汽车图纸 生产车间 汽车用属性描述: 名字 颜色 轮子 ……动作:方法 跑类 new 对象属性(成员变量) 方法(成员方法)成员变量:直接定义在类中的变量作用域:整个类都原创 2016-08-06 20:43:07 · 241 阅读 · 0 评论 -
(小案例)猜数字游戏
猜数字游戏游戏规则: 1.随机生成0-100 2.从键盘输入一个猜的数 3.如果猜大了,提示大了 4.如果猜小了,提示小了 5.猜到正确结束import java .util.Scanner;public class Guess{ public static void main(String[]args){原创 2016-08-06 20:29:25 · 607 阅读 · 0 评论 -
(八)、循环结构
循环结构for()循环语法:for(表达式1;表达式2;表达式3){ //循环体 } 1.表达式1只执行一次 2.表达式2是个boolean表达式 3.表达式1一般是对循环变量的初始化 4.表达式3一般是对循环变量进行自增或自减操作 5.表达式1可以省略,分号不能省 6.表达式2也可以省略,表示是t原创 2016-08-06 20:19:47 · 284 阅读 · 0 评论 -
(七)、选择结构
选择结构if……else结构 1 if……else if(布尔值){ …… } 2 if(布尔值){ true的时候执行 }else{原创 2016-08-06 15:20:08 · 240 阅读 · 0 评论 -
(六)、三元运算符
三元运算符 唯一一个需要三个元素的运算符 表达式1(boolean)?表达式2:表达式3; 如果表达式1为true,结果为表达式2,否则表达式3Demo:import java.util.Scanner;public class Demo2{ public static void main(String[]args){ System.out.原创 2016-08-06 15:00:05 · 326 阅读 · 0 评论 -
(五)、运算符
运算符 + - * / % ++ -- + 字符串连接符 System.out.println("你好" + 2 + "啊");//你好2啊 System.out.println(1 + 2 + "哈哈");//3哈哈 System.out.println("" + 1 + 2 + "哈哈");//12哈哈Demo:public cl原创 2016-08-06 12:35:27 · 534 阅读 · 0 评论 -
(四)、类型转换
类型转换不同类型之间进行赋值操作或者运算的时候涉及到了类型转换编译器自动完成的转换,称只为自动类型转换 从范围小的向范围大的转换的时候,会自动类型转换 byte-->short-->int -->long-->float-->double char-->int 从左向右赋值可以自动完成 byte --原创 2016-08-06 11:39:12 · 192 阅读 · 0 评论 -
(三)、转义字符
转义字符常用: \n 换行符 \’ 单引号 \” 双引号 \ \ \t 制表符 \r 回车 Windows下 控制台用\r\n表示回车Demo:public class Demo2{public static void main(String[]args){ char c1 = 'A'; //原创 2016-08-06 11:09:51 · 299 阅读 · 0 评论