![](https://img-blog.csdnimg.cn/404330cbd0d445c492e025234cadeae7.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java基础教程
Java基础教程,帮助了解Java语法,Java语言的特性
JeffHan^_^
从事开发行业,擅长使用Java语言,本科学习物联网
展开
-
【Java高级特性】java学习之旅38-xml的解析方式
定义:Extensible Markup Language 可扩展标记语言特点:XML与编程语言无关可以实现不同编程语言实现的系统之间的数据转换用途:数据交换实现项目的配置文件和json对比:json比xml更加的轻量级xml比json更可读,结构更清晰注意事项:xml使用的都是双标签xml标签名对大小写敏感标签名建议使用字母加数字,不可使用特殊字符,不可使用空格属性节点不建议使用< > " ’ &建议同级标签要缩进对齐.原创 2022-03-10 00:03:31 · 214 阅读 · 0 评论 -
【Java高级特性】java学习之旅37-注解
jdk1.5+元数据之于元数据:数据是每一行信息,元数据是描述数据的数据。代码之于元代码:java中实现程序功能的都是代码,注解就是元代码。注解之于元注解:元注解就是描述注解的注解常见的注解:@Override: 描述并限定方法必须是重写的方法@Deprecated: 描述被修饰的对象已经弃用@SuppressWarnings: 一支警告元注解:@Targer:描述注解可以描述的对象@Retention: 描述注解的生命周期,存活到哪个阶段(源码,字节码文件,运.原创 2022-03-10 00:03:23 · 70 阅读 · 0 评论 -
【Java高级特性】java学习之旅36-网络编程
网络通信协议:应用层:HTTP:超文本传输协议FTP:文本传输协议SMTP: 邮件发送协议POP: 邮件接收协议传输层:TCP:传输控制协议(三次握手)UDP: 用户数据包协议网络层IP: 网络协议数据链路层物理层IP:网络地址:唯一标识网络上的每一台计算机地址组成:32位,由4个8位二进制数组成。本地ip的表现形式:127.0.0.1localhost局域网ip(可以使用ipconfig指令查询)广域网ip(百度直接搜索i原创 2022-03-10 00:03:13 · 217 阅读 · 0 评论 -
【Java高级特性】java学习之旅35-多线程
什么是线程,什么是进程?进程:进行中的程序,系统中的最小执行单元,有独立的运行空间和内存空间线程:进程中的最小执行单元,每一个进程至少包含一个主线程。什么是并发,什么是并行?并发:多个线程争抢系统资源,交替执行,单核单线程cpu即可执行。并行:多个线程同时执行,互不影响,必须要在多线程CPU上才能执行。实现多线程的根本目的:根本目的是压榨系统资源,可以一定程度上的提高任务执行效率。常用方法:设置线程的名字:setName(String name)获取线程的名字:T原创 2022-03-10 00:03:01 · 89 阅读 · 0 评论 -
【Java高级特性】java学习之旅34-序列化与反序列化
Serializable可串行化,可序列化,是一种标识接口,表示一种能力。实现了该接口的类具有可序列化的能力。一般对实体类实现可序列化序列化:将对象转换为字节序列,便于数据的存储和网络传输反序列化:将字节序列转化为对象与之相关的类:二进制流(继承自字节流)DataInputStream, DataOutputStream对象流(继承自字节流)ObjectInputStream, ObjectOutputStream序列化包装数据类型: FileOut原创 2022-03-10 00:02:53 · 87 阅读 · 0 评论 -
【Java高级特性】java学习之旅33-IO流
File类文件类:表示目录和文件的类是Java中io流的基础类常用的方法:有参构造方法:File(String pathname)//pathname可以填写绝对路径或者相对路径File file = new File("E:\\test\\hello.txt");判断是否是文件 isFile()System.out.println(file.isFile());//true判断是否是目录 isDirectory()System.out.println(file.i原创 2022-02-28 00:16:08 · 346 阅读 · 1 评论 -
【Java高级特性】java学习之旅32-日期日历类
Date日期类表示瞬时的时间,就是时间的偏移量几个通用的时间CST: 中国标准时间UTC: 协调世界时GMT: 世界时(格林威治时间)java中时间的起点:1970-1-1 0:0:0:000常用的方法:获取当前的时间Date date = new Date();获取当前时间的偏移量(时间起点至今的毫秒值)long time = date.getTime();通过时间偏移量创建date对象Date date = new Date(Long.MAX_V原创 2022-03-10 00:02:31 · 245 阅读 · 0 评论 -
【Java高级特性】java学习之旅31-Math类、Random类
Math类工具类,包含常用于执行的基本数学运算的方法常量// E: 自然数的底数System.out.println(Math.E);// PI: 圆周率System.out.println(Math.PI);常用的方法:取绝对值:System.out.println(Math.abs(-3.14));//3.14求a的b次幂System.out.println(Math.pow(2, 3));//8求最大值最小值Math.max(double a, doub原创 2022-03-10 00:02:23 · 84 阅读 · 0 评论 -
【Java高级特性】java学习之旅30-UUID类
通用的唯一识别码,是用于计算机体系中以识别信息数目的一个128位的标识符。常用的方法获取一个随机的UUIDUUID uuid = UUID.randomUUID();将UUID转化成 String类型String uuidStr = uuid.toString();原创 2022-03-10 00:02:14 · 130 阅读 · 0 评论 -
【Java高级特性】java学习之旅29-StringBuffer和StringBuilder
StringBuffer\StringBuilder字符串缓冲区\字符串建造者,存放了一个String(char数组),但是可以修改(没有被final修饰)Buffer是线程安全的,Builder是线程不安全的常用方法:String str = "hello world";// 1.构造方法StringBuilder sb = new StringBuilder(str);// 2.在字符串缓冲区后追加一个字符串sb.append(" java");// 3.将 StringBui原创 2022-03-10 00:02:03 · 100 阅读 · 0 评论 -
【Java高级特性】java学习之旅28-String类
字符串的常量:底层使用一个被final修饰的char类型数组存储字符,初始化赋值之后,不可改变(每次改变String类型的值,都会在内存中新建一个对象)。常用的方法:1 构造方法://根据底层的实现原理来创建String str = new String(new char[] {'1','2','3'});//常用方式String str = "123";String str = new String("123")2 获取字符串的长度.length()String str = ".原创 2022-03-09 00:04:16 · 105 阅读 · 0 评论 -
【Java高级特性】java学习之旅27-包装类
对8种基本数据类型进行面向对象的包装。基本数据类型和包装数据类型基本数据类型包装数据类型byteByteshortShortintIntegerlongLongfloatFloatdoubleDoublecharCharbooleanBoolean基本数据类型和包装数据类型的区别包装类是类,属于引用数据类型包装类的默认值数null,基本数据类型是各自的零值泛型只能使用包装类包装类更加符合面向对象的编程思想.原创 2022-03-09 00:04:08 · 61 阅读 · 0 评论 -
【Java高级特性】java学习之旅26-枚举
在开始介绍之前我们先来理解一下枚举的概念为了防止用户乱输入创建对象,我们通常将格式形成统一的,例如下列的性别:public final class SexUtil { private SexUtil() {} public static final char MALE = '男'; public static final char FEMALE = '女'; }但是由于无法限定对象的数据类型所以这里引入了数组。jdk1.5+使用它来汇总一系列表示同类含义的常量。枚举是引原创 2022-03-09 00:03:53 · 132 阅读 · 0 评论 -
【Java高级特性】java学习之旅25-泛型
定义:广泛定义的数据类型,定义一种不确定的数据类型使用方式:将泛型声明在类上:/** * 在创建该类对象时可以指定泛型指代的数据类型, * 在这个类内部任意声明中都可以使用指代的数据类型 */ //在创建类后面指代泛型 public class Class01<R> { //可以由类后面定义的泛型定义方法中泛型的数据类型 public void hello(R value) { System.out.println(value); }} @Tes原创 2022-03-09 00:03:43 · 77 阅读 · 0 评论 -
【Java高级特性】java学习之旅24-Collections工具类
容器类的工具类,类比Arrays和数组常用方法:synchronized系列方法,将不同步的容器对象转换成同步的容器对象。empryList()、emptySet()、emptyMap() 返回空的容器对象重点:sort(List<T> list),sort(List<T> list, Comparator<? super T> c)对容器中的元素进行排序reverse(List<?> list) 反转顺序min(Collection<原创 2022-03-09 00:03:35 · 65 阅读 · 0 评论 -
【Java高级特性】java学习之旅23-Map
HashMap特征:数据结构:jdk1.8之前:数组 + 单链表,jdk1.8之后数组 + 单链表 + 红黑二叉树初始容量是16,加载因子0.75当存放的元素个数达到容量的0.75时,扩容为原来的2倍容量上限 1 << 30其他的常量:TREEIFY_THRESHOLD = 8:当map的容量达到8时,数据结构从单链表转为红黑二叉树;UNTREEIFY_THRESHOLD = 6:当map的容量小于6时,数据结构由红黑二叉树转为单链表。无序的、key唯一、value不唯一、key原创 2022-03-09 00:03:26 · 137 阅读 · 0 评论 -
【Java高级特性】java学习之旅22-Set集合
HashSet特征:底层实现是HashMap的key默认初始化的容量是16,默认的加载因子是0.75当存储容量达到原容量的0.75时,扩容为原容量的2倍不保证顺序、唯一、可以为null、无索引查找较慢、插入删除较快线程不同步的,多线程使用不安全,实现同步Set set = Collections.synchronizedSet(new HashSet(…))常用的方法: add(E e)(要增加的元素) size()//获取集合的长度 remo原创 2022-03-09 00:03:18 · 101 阅读 · 0 评论 -
【Java高级特性】java学习之旅21-List集合
ArrayList特征:底层实现是数组,数据结构是线性表(连续的元素、连续的存储空间、有首有尾)jdk1.8之前初始容量是10,jdk1.8之后初始容量是0(在存入第一个元素的时候,容量为10)扩容为原容量的1.5倍(参考方法grow)有序的、不唯一、可为null、有索引(会越界)查找较快、插入删除较慢线程不同步、多线程使用不安全如果要同步:List list = Collections.synchronizedList(new ArrayList(…));常用方法:/**原创 2022-03-09 00:03:08 · 226 阅读 · 0 评论 -
【Java高级特性】java学习之旅20-集合框架
定义:可以存放一系列基本数据类型数据或者引用数据类型对象的对象。分类:数组在内存中,连续的固定长度的空间。存储相同数据类型的数据有索引,从0开始,不能越界查找较快,插入和删除较慢ListArrayList**、LinkedList*、Vector、Stack特征:有序的、不唯一的,可为null、有索引Set(HashSet*、LinkedHashSet、TreeSet*特征:无序的(LinkedHashSet有序,TreeSet可排序)、唯一、可为null、无索原创 2022-03-09 00:02:57 · 92 阅读 · 0 评论 -
【Java面向对象】java学习之旅19-异常
定义:程序在运行过程中遇见的不正常的情况相关的概念:java针对程序运行时出现的异常都包装成了异常类,便于程序员调试,也便于编程中统一处理异常分类:编译时异常、检查时异常、非运行时异常:必须在编程时进行处理,否则无法通过编译,在java文件编译成.calss文件时出现的异常。例:IOExceptionFileNotFoundExceptionClassNotFoundException运行时异常、非检查性异常、非编译时异常:不必处理,在程序运行时由于虚拟机操作出现的异常原创 2022-03-08 00:06:39 · 138 阅读 · 0 评论 -
【Java面向对象】java学习之旅18-lambda表达式
下面通过一段代码来简单介绍一下lambda表达式public static void main(String[] args) { int[] array = {1, 6, 9, 6, 5}; /** * 我们在forEach()的参数中传入IntConsumer的实现类,可以理解为函数接 * 口只有一个方法,实现类的对象只会调用那一个实现的方法,所以参数的 * action会去找到那个方法去action.那个方法 */ Arrays.stream(array原创 2022-03-08 00:06:29 · 162 阅读 · 0 评论 -
【Java面向对象】java学习之旅17-接口
定义:表示一种能力或者规范使用:使用interface关键字声明接口接口中可以声明常量、抽象方法、静态方法、默认实现的方法用implements关键字实现接口实现类中需要重写实现所有的抽象方法,也可以重写接口中默认实现的方法一个简单的接口实例://接口的声明用interface,可以继承多个接口public interface MyInterface extends MyFaterInterface, MyFaterInterface2 { //接口中可以定义的有:原创 2022-03-08 00:06:20 · 379 阅读 · 0 评论 -
【Java面向对象】java学习之旅16-抽象类
定义:抽象的类,对于一系列具有共同特征和行为的子类的进一步抽象。使用:使用abstract修饰类名抽象类中可以有属性、普通方法和抽象方法抽象方法:只有声明没有实现,使用abstract关键字修饰子类继承抽象父类,通过重写实现父类的所有抽象方法,否则该子类也是抽象类注意事项:抽象类不可以直接创建对象,可以通过类的内部实现创建对象。抽象类可以有抽象方法,也可以有普通方法。有抽象方法的类一定是抽象类。子类没有重写实现所有抽象父类的抽象方法,子类也必须是抽象类。构造方法和静态原创 2022-03-08 00:06:12 · 127 阅读 · 0 评论 -
【Java面向对象】java学习之旅15-多态
定义:相同的方法可以表现出多种形态,这样的现象就叫多态。前提:继承重写父类引用指向子类对象向上转型和向下转型:向上转型:隐式的,创建对象时父类引用指向子类对象,实参为子类对象形参为父类引用向下转型:显式的,创建对象时必须是父类引用指向子类对象,才可以向下转型成对应的子类对象。instanceof可以判断父类引用所指的对象是否可以向下转型为指定的类优点:提高扩展性便于实现替换提高代码可维护性允许父类引用指向子类对象,解除了引用和对象的耦合注意事项:原创 2022-03-08 00:06:03 · 201 阅读 · 0 评论 -
【Java面向对象】java学习之旅14-Object类
所有类的超级父类、顶级父类、祖先类常用方法:Class<?> getClass():返回本对象的所属类的Class对象int hashCode():返回本对象的hash值boolean equals(Object obj):比较两个对象的地址是否相等String toString():返回类的全限定名 + @ + 哈希码的16进制形式void finalize():需要子类重写,子类对象被GC回收时,会自动调用public class Object { // nat.原创 2022-03-08 00:05:52 · 244 阅读 · 0 评论 -
【Java面向对象】java学习之旅13-继承
定义:父类派生出子类,子类继承父类,子类可以获得父类的属性和方法.使用:extends关键字,声明子类继承父类.super关键字,用于指代父类对象(创建子类对象之前,会先创建父类对象)super()代表父类构造方法,super.方法名()调用父类方法,super.属性名调用父类的属性例:/** * 人类(父类) */ public class Person { // 声明类名,一个java文件中只能有一个被public修饰的类,并且这个类的类名和文件名一致。 // 实体类原创 2022-03-08 00:05:43 · 3073 阅读 · 0 评论 -
【Java面向对象】java学习之旅12-static关键词
static关键字的使用:修饰成员变量:即为静态变量(类变量),所有的对象共享这个变量,可以用类名.属性调用之。修饰成员方法:即为静态方法(类方法),所有的对象共享这个方法,可以用类名.方法调用之。修饰代码块:即为静态代码块,本类被加载的时候会执行,并且只会执行一次。修饰类:只能修饰内部类,即为静态内部类修饰类的导入:类的静态导入,把目标类中的静态变量和静态方法导入为本类中的静态变量和静态方法。注意:普通方法可以直接使用静态方法、静态变量静态方法不可以直接使用普通方法、普通变量原创 2022-03-08 00:05:30 · 69 阅读 · 0 评论 -
【Java面向对象】java的学习之旅11-封装
定义:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问实现:私有化属性,使用private关键字修饰类的属性。对外提供公开操作属性的方法,提供public修饰的getters/setters方法好处:提高代码的安全性提高代码的复用性“高内聚”:封装细节,便于修改内部代码,提高可维护性“低耦合”:简化外部调用,便于调用者使用,便于扩展和写作。例:/** * 需求: * 1.Dog类,age属性不可能为负值原创 2022-03-08 00:05:09 · 161 阅读 · 0 评论 -
【Java面向对象】java学习之旅10-方法的一些特性
方法的重载定义:多个方法,方法名相同,使用时根据参数列表的不同区分不同方法。条件:发生在一个类中方法名相同参数列表不同(参数的个数、数据类型)与返回值类型、权限修饰符、方法体无关例: public static void main(String[] args) { Demo03 demo03 = new Demo03(); //System.out.println(demo03.plus(1, 2)); //System.out.println(demo0原创 2022-03-08 00:04:47 · 95 阅读 · 0 评论 -
【Java面向对象】java学习之旅9-类中的相关概念
成员变量和局部变量成员变量(全局变量)局部变量注意:1.如果成员变量不是静态的,静态的方法访问不到。2.代码块修饰环节的声明变量,作用域在于整个代码块。形参和实参形参:形式上的参数实参:实际上的参数通过一个例子来说明形参和实参的形式:public static void main(String[] args) { Demo02 demo02 = new Demo02(); //a -> 实参 int a = 2; demo02.funct原创 2022-03-07 14:11:46 · 73 阅读 · 0 评论 -
【Java面向对象】java的学习之旅08-类和对象
对象:用来描述客观事物的一个实体,由一组属性和一组行为组成类:具有相同属性和方法的一组对象的集合,类是对象的抽象,对象是类的具体通过几个Demo来进一步详细解释一下类和对象的概念定义一个Student类public class Student { //定义属性 String name; char sex; //定义方法,自我介绍 public void showInfo() { System.out.println("接下来是我的自我介绍。"); Syst..原创 2022-03-07 14:10:57 · 145 阅读 · 0 评论 -
【Java基础】数组的练习题目
数组的习题练习从控制台输入5个学生的成绩,保存到数组。求平均分、最高分、最低分public static void main(String[] args) { Scanner input = new Scanner(System.in); double[] scores = new double[5]; for (int i = 0; i < scores.length; i++) { System.out.println("请输入第" + (i + 1原创 2022-03-07 14:08:43 · 228 阅读 · 0 评论 -
【Java基础】java学习之旅07-二维数组
例: int[] array1d = new int[5]; System.out.println(Arrays.toString(array1d)); int[][] array2d = new int[2][3]; for (int i = 0; i < array2d.length; i++) { System.out.println(array2d[i].length); System.out.println(Arrays.toString(arr原创 2022-03-07 14:06:43 · 316 阅读 · 0 评论 -
【Java基础】java学习之旅06-数组的相关知识
数组常用的遍历方式:for vs foreach先定义一个数组int[] array = {1, 2, 5, 6, 9, 3, 4};for循环遍历数组// for循环for (int i = 0; i < array.length; i++) { System.out.println(array[i]);}while循环遍历数组int i = 0;while (i < array.length) { System.out.println(array[i]);..原创 2022-03-07 14:05:03 · 399 阅读 · 0 评论 -
【Java基础】java学习之旅05-循环结构
while循环特征:先判断后执行。至少执行0次,最多无限次。最佳实践:循环次数未知的情况下使用。例: public static void main(String[] args) { int i = 1; while (i <= 100) { System.out.println("第"+ i++ +"遍,好好学习,天天向上!"); } }do…while…循环特征:先执行后判断。最少执行一次,最多无限次。最佳实践:循环次数不确定的情况原创 2022-03-07 14:03:17 · 165 阅读 · 0 评论 -
【Java基础】java学习之旅04-数据类型转换及运算
进制转换常用的进制:二进制:BIN,1010八进制:OCT,012十进制:DEC,10十六进制:HEX,0xA数据类型之间的转换自动类型转换(隐式转换):byte -> short -> int -> long -> float -> doublechar -> int -> long -> float -> double强制类型转换(显式转换):会导致精度丢失,甚至数据溢出。例: int money =原创 2022-03-07 14:01:33 · 101 阅读 · 0 评论 -
【Java基础】java学习之旅03-常量和Scanner类
常量 常量 定义:在java程序运行过程中,所存储的数据不可改变。 使用: 1.使用关键字final修饰 2.只能赋值一次 3.常量名全大写,多个单词使用下划线分隔原创 2022-03-07 13:58:59 · 80 阅读 · 0 评论 -
【Java基础】java学习之旅02-变量
变量的定义:在java程序当中,可以改变的量;java虚拟机在内存当中划分了一块区域存放一个数据,这个数据是可以改变的,但是这块内存空间的地址不可改变,为了便于记忆,我们给内存地址起了一个别名,这个别名就叫做变量名。命名规则:可以由字母、数字、下划线、美元符号、人名币符号组成。不能以数字开头。满足驼峰命名法,第一个单词首字母小写,后面的单词首字母大写。不能使用java的关键词和保留字。变量名要做到见名知义。变量名杜绝使用拼音和中文。使用英文缩写必须符合规范。例:Stri.原创 2022-03-07 13:51:47 · 83 阅读 · 0 评论 -
【Java基础】java学习之旅01-初识java
java学习之旅02-初识javajava的第一个程序public class HelloWorld{ public static void main(String[] args){ System.out.println("hello world!"); } }知识点:输出后换行:System.out.++println++(“hello world!”);输出后不换行:System.out.++prin原创 2022-03-07 13:50:54 · 271 阅读 · 0 评论