Java基础篇
文章平均质量分 86
java基础
长河落日猿
都是一些个人的Java学习总结,仅供参考,欢迎大家交流讨论。
展开
-
Java运行编译机制和结构总结
先在方法区加载class信息,生成 成员方法的地址 ,代码从上往下运行,运行main方法,运行方法就在栈内存开辟空间,先进后出,然后用new创建对象,一用new就在堆内存开辟空间,并生成地址值,将地址值赋给变量,对象是对象变量,然后堆内存中为赋值的成员变量生成默认值,映射方法区方法的地址值。E. 程序计数器 由字节码执行引擎控制计数,比如1~10行代码,执行一行,i++,执行完第三行,计数为4,线程cpu时间片被抢,挂起,重新抢到就根据计数器的计数接着执行后续的代码。原创 2022-11-02 16:33:00 · 464 阅读 · 0 评论 -
Java基础17~26总结
多个类(称为线程一类,线程二类) 需要一个共有的变量,即将这个变量封装为一个类(称为属性类)的属性,注意属性类的属性修饰符为public公共的,在测试类中new 这个属性类实例化为对象,然后将此对象作为参数传入需要的多个类(线程一,线程二)中,就可以实现共享对象的属性即变量,且多个类(线程一,线程二) 需要定义此对象(属性类)为私有变量,并提供有参构造。一般开发过程都是封装好了的线程池工具类,很少使用自定义线程池,只要从线程池工具类获取一个线程就可以了,也很少直接使用线程开发,都是间接使用,懂得原理就好。原创 2022-10-19 14:54:12 · 367 阅读 · 0 评论 -
Java基本数据类型数据溢出底层原理:原码、反码、补码
计算器底层使用二机制 补码 进行运算正数的原码 = 反码= 补码负数的反码是原码 第一符号位数 不变 其他位数取反负数的补码是负数的反码+1一个字节占8位,不足补0,其中第一位表示正负符号,0表示正数,1表示负数例如 int类型占4个字节,所以有48位二进制,8是 1000,不足48位补0, 原码为 00000000 00000000 00000000 00001000 是正数 补码=原码 =反码-8是 原码10000000 00000000 00000000 00001000 是负原创 2022-02-26 18:29:49 · 1221 阅读 · 0 评论 -
Java基础26 注解 正则表达式
一、注解概念1.注释:用于对代码的进行解释 主要是给程序员看的2.注解:用于对代码进行说明 主要是用于JVM(计算机)看3.定义:注解(Annotation),也叫元数据,一种代码级别的说明。它是jdk1.5及以后版本引入的一个特性,与类、接口、枚举 是同一个层次。它可以声名在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释A.在jdk1.5之后才能使用 B.用来对这些元素进行说明,注释4.作用分类编写文档:通过代码里标识的注解生成文档 生成文档原创 2022-03-08 20:51:18 · 1670 阅读 · 0 评论 -
Java基础25 反射 junit测试
一、Junit测试1.Junit 主要用于单元测试 也就是局部测试 可以通过局部单元测试 查找代码出现bug2.测试黑盒测试 功能测试 接口测试 不需要编写代码 瞎点 根据测试用例进行测试白盒测试 性能测试 编写脚本代码 shell脚本 语法与指令(测试)3.Junit 单元测试4.使用的步骤需要进行导包 junit jar定义一个类定义方法 在方法上加上@Test 注解访问修饰符public没有返回值 只能使用void J进行修饰其余跟普通方法一样5.操作流程step01 新建原创 2022-02-26 10:40:35 · 529 阅读 · 0 评论 -
Java基础24 Lambda表达式及省略写法 Steam流 函数式接口
一、jdk8&jdk9接口的特性1.概念:在jdk1.8 之后 接口中不仅可以有抽象方法 还可以存在其他的成员方法2.添加的方法jdk8 增加默认方法与静态方法jdk9 增加私有的方法3.影响接口中不仅只有抽象方法 还有普通的方法 缩短接口与抽象类之间的差别,接口是可以多继承的所以以后的趋势 接口可能替代抽象类4.默认方法概述 默认方法就是使用 default关键字来进行修饰方法语法:访问修饰符 default 返回值类型 方法名称(参数列表) { 方法体 }特点:接口中默原创 2022-02-24 09:45:01 · 716 阅读 · 0 评论 -
Java基础23 网络编程 socket套接字流 TCP传输总结
一、网络编程的概念1.计算机网络:将不同地区的计算机,使用网络来进行连接 实现不同地区的数据的交互与共享(互联时代)2. 网络编程的三要素:IP地址 端口号 协议3. ip地址:是在网络连接中 每一台电脑的唯一标识ip地址的分类 IP4 IP6IP4 是由四个字节的二进制组成 由于不好记忆 IP4 改成以十进制 来进行表示 每一个字节是以.来进行分割192.168.1.33 子网 10.1IP6 ip6是由16进制来组成的查看IP地址第一步:windons+r第二步:cmd第三步 指定原创 2022-02-22 21:11:15 · 651 阅读 · 0 评论 -
Java基础22 多线程之多生产者多消费者
生产者消费者包子案例多个类(称为线程一类,线程二类) 需要一个共有的变量,即将这个变量封装为一个类(称为属性类)的属性,注意属性类的属性修饰符为public公共的,在测试类中new 这个属性类实例化为对象,然后将此对象作为参数传入需要的多个类(线程一,线程二)中,就可以实现共享对象的属性即变量,且多个类(线程一,线程二) 需要定义此对象(属性类)为私有变量,并提供有参构造生产者线程和消费者线程要有共享对象,即将包子提升为类作为参数传入生产者线程和消费者线程,这个包子类就是共享的对象,就可以使用 syn原创 2022-03-11 21:14:28 · 1882 阅读 · 0 评论 -
Java基础22 生产者消费者模式 线程第三种实现方式 枚举 线程的生命周期 线程池 定时任务 单例模式
多线程的常用的方法原创 2022-02-19 15:53:34 · 280 阅读 · 0 评论 -
Java基础21 多线程线程两种实现方式 锁
多线程的概念1.程序 :一个固定逻辑与数据的集合 就称为程序 例如淘宝 贪吃蛇小游戏2.CPU: 中央处理器 主要用于协调程序与硬件进行配置的工作3.并发与并行1.并发(高并发)在同一个时间段 执行两个或者多个任务 单核cpu 是进行相互切换 执行某一个任务 切换速度是非常快 很容易误解是同时执行的 其实是交替执行2.并行在同一时刻 执行两个或者是多个任务的时候 多核cpu是同时执行多个任务 同时执行 目前的电脑都是使用多核例子: 可以听歌 敲代码 看视频1.进程: 运行在内存中的程序原创 2022-02-17 20:00:34 · 1109 阅读 · 0 评论 -
Java基础20 properties 配置文件 多参数
Properties概述1.Properties 类表示了一个持久的属性集属性集:Properties 就是以键值对来存储资源 也是一个键对应一个值持久化: 可以将 Properties数据永久保存到文件 可以与文件进行交互2.Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串3.Properties 就是hashtable的一个子类 可以把Properties 当做是一个map对象来看待有map的put,keySet方法 独有方法是setPropert原创 2022-02-16 19:30:02 · 1118 阅读 · 0 评论 -
学Java基础19 字符流 编码表 转换流 字符高效流 对象流 序列化 以及所有的IO流总结
一、字符流概述1.字符流 就是用于来读写字符操作的流2.字符流使用的原因: 使用字节流来读取文件中中文会出现乱码 因为中文不是一个字节组成的所以读取中文的时候 需要使用字符流 字符实际上也是使用字节流来进行读取 只是字符流底层进行了转换字符流 = 字节流+ 编码表 通过字节流进行读取 通过编码表来进行转换3. 所有的中文不管在那种编码表下 第一个字节都是负数 所以根据这个规律就可以进行转换二、编码表1.字符集: 也就是包含全世界国家的语言或者是字符的集合2.计算在存储所有国家的语言字符的时原创 2022-02-14 21:10:19 · 499 阅读 · 0 评论 -
Java基础18 read(byte[] b) read()区别 字节高效缓冲流
1.一次读取多个字节public int read(byte[] b)参数: 读取的字节存放到数组 数据类似于缓冲区返回值:表示读取的有效的字节个数2.代码package day18;import java.io.FileInputStream;import java.io.IOException;public class Test04 { public static void main(String[] args) throws IOException { by原创 2022-02-11 20:12:34 · 1452 阅读 · 1 评论 -
Java基础17 file 递归 IO字节流
File1.文件和目录路径名的抽象表示形式 ==> 可以把文件或者是路径来构建成一个File对象 可以使用其方法2.绝对路径: 从根盘符开始的路径 就是绝对路径 c:\admin\d.txt4.相对路径:相对于具体参照物的路径 admin\txt idea 中 大部分使用的使用相对路径 相对于当前的项目例如 相对路径 F:\IdeaProjects\day16 即添加到项目存储的位置文件夹里5.File 常用的构造File对象相当于一个String ,不过是有格式的,且有专属的方法来对文原创 2022-02-11 11:24:13 · 437 阅读 · 0 评论 -
Java基础 01~16 String 总结
String 总结原创 2022-02-15 17:53:20 · 258 阅读 · 0 评论 -
Java基础01~16 集合总结查漏补缺
List集合可重复,有序,其有序只是根据索引有序,其值不一定有序,相当于数组,排序需要自己写方法HashSet 不可重复,无序,别强求有序LinkedHashSet 不可重复,有序,其有序是插入数据顺序的有序,而不是按值来排序TreeSet 不可重复,有序,其有序是因其有内部的CompareTo方法,基本类型按值大小排序,复杂引用类型需要重新CompareTo方法来进行比较具体分析看上一个查漏补缺一、List并发错误解决方法第一种 普通for循环从list.size()-1开始倒着循环,插入原创 2022-03-07 15:34:43 · 304 阅读 · 0 评论 -
Java基础01~16总结,集合总结
细节知识总结(查漏补缺)1.编译不报错String s = "jion" +2 +"here"将其他类型转为String类型最简单的方法 就是 其他类型+" ";所以代码中的int 类型的2 转为String类型,符合语法编译报错 int f=5+5L; int类型小于long类型,无法自动转型,不符合语法 正确语法long f=5+5L;或者加强转2.构造方法,在创建对象时即(new 一个对象 实例化对象)就会执行,当存在继承关系时,使用向上转型实例化对象,先执行子类构造方法,在层层往上执行父类原创 2022-02-10 22:03:51 · 581 阅读 · 0 评论 -
Java基础16 泛型
一、泛型概念1.使用泛型的场景:在实例化集合 不确定其数据类型的时候 就可以使用泛型 泛型是一个变量 变量用于接受数据类型2.使用泛型:在实例化集合的时候 需要确定其数据类型语法 : Lidt<泛型> 集合的名称 = new ArrayList<泛型>();例子:List 集合的名称 = new ArrayList()3.注意点 :A.泛型不能是基本数据类型 只能是引用数据类型B. 前后的泛型的数据类型必须一致C. 在jdk1.7之后 出现了灵性的泛型 后面的数据类原创 2022-02-08 19:59:09 · 163 阅读 · 0 评论 -
Java基础15 hash值 set map
例子:生成随机数,不能重复,存入List集合并进行升序输出public class Test02 {public static void main(String[] args) {List li = new ArrayList();while (li.size()<10){//产生一个1-100随机数int random= (int) ((Math.random()*100)+1);//判断集合中是否包含这个元素if (!li.contains(random)){li.add(ran原创 2022-02-02 20:59:44 · 1577 阅读 · 0 评论 -
Java基础14 集合(重要)四种遍历方式 list 并发异常 set
一、collection 带all的方法package day14;import java.util.ArrayList;import java.util.Collection;public class Test01 { public static void main(String[] args) { Collection cal1 = new ArrayList(); cal1.add("a"); cal1.add("b");原创 2022-01-20 21:10:28 · 543 阅读 · 0 评论 -
Java基础13 Scanner try-catch 异常 Throw 与 Throws 集合collection
一、Scanner1.概念:一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描==>就是一个文本扫描器2.构造方法import java.util.Scanner;public class Test {public static void main(String[] args) {Scanner input = new Scanner(System.in);// System.out.println("请输入字符串");// String s = input.next();原创 2022-01-19 20:20:14 · 461 阅读 · 0 评论 -
Java基础12 StringBuffer/StringBulid 包装类Integer BigDecimal大数据类 Data SimpleDateFormat Calendar
一、StringBuffer/StringBuild(重点)1.1简介1.概念:线程安全的可变字符序列 个类似于 String 的字符串缓冲区但通过某些方法调用可以改变该序列的长度和内容append(boolean b) insert(int offset, boolean b)2.String 与StringBuffer区别:String 不可以变字符串 StringBuffer 是可变的字符串String 操作字符串效率低 StringBuffer效率高 sql拼接3.StringBui原创 2022-01-18 20:10:43 · 411 阅读 · 0 评论 -
Java基础11 jar打包导包 API 生成帮助文档 String类 equals()与==区别
将项目进行打包(jar)二、在项目中引入jarstep01 在项目中新建文件夹lib三、在项目中删除依赖四、API4.11.概念:API:应用程序接口编程 主要就是提供一些类与接口方法的使用2.作用: jdk提供一些常用方法以及类的使用 简化开发的流程理解:就是一些方法的详细说明,需要使用什么方法时可以先百度,在用API搜索了解4.2 api使用方法4.3注意事项A.查看类需要关注类的描述B.类是否有构造方法 是否可以实例化对象C.查看类的普通的方法 方法是原创 2022-01-17 22:01:36 · 524 阅读 · 0 评论 -
Java基础10 抽象方法 接口 面向对象思想案例(重要)
一、抽象方法原创 2022-01-15 10:16:59 · 722 阅读 · 0 评论 -
Java基础09 重写 多态 final
一、继承中访问成员方法的特点1.特点:子父类方法重名的时候:优先访问子类的方法子父类方法不重名的时候:优先方法子类的方法 没有则向上进行查找 一直查找到Object类 没有则报错2.重写重载规则:在同一个类中 方法名相同 参数不同 与返回值无关重写规则:在子父类中 方法名相同 参数相同 与返回值和访问修饰有关重写使用的注解:@Override 用于检查是否有重写的方法 可以不加重载用@Overload使用重写场景:父类 共性方法的抽取 子类需要继承使用父类的功能 并且在此基础上进行扩展 就原创 2022-01-13 20:59:39 · 333 阅读 · 0 评论 -
Java基础08 封装 构造方法 静态 继承
一、封装1.封装:对属性进行封装 提供对外访问的方法2.体现A.私有化属性 对属性进行封装B.对工具类的封装 例如 加密的工具类 分页工具类…3.好处A.隐藏代码内部实现的细节B.提高代码的安全性C.提高代码的可扩展性 可复用性4.用关键字 private 进行属性封装可以修饰 成员变量 方法 构造 类 接口5.使用private修饰后 只能当前类封装问题:其他类不能访问成员变量解决方案:提供两个公有的方法 set 和 getsetxxx == >用于给成员变量来进行赋值原创 2022-01-12 20:51:53 · 172 阅读 · 0 评论 -
java基础07 debug 类 类的运行过程
一、idea使用教程1.创建模块2.调试代码debugA.设置断点,1.出现问题的代码处设置 2.设置在代码运行的第一行B.debug运行C.一步一步运行,观察变量的变化 以及代码执行的逻辑D 发现问题,解决问题二、常用快捷键psvm + 回车:快速生成main方法;sout + 回车:快速生成输出语句;alt +1 :打开/隐藏工程目录,包,类;alt +4:打开/隐藏控制台,运行结果;ctrl +alt+L:格式化选中代码,好看,未选中即全部;或者 ctrl +shi原创 2022-01-11 21:02:06 · 333 阅读 · 0 评论 -
Java基础06 数组项目 外卖点餐
数组项目package array;import java.util.Scanner;public class MtOrderPro { public static void main(String[] args) { System.out.println("欢迎使用霉团Pro点单系统"); String [] names = new String [5]; //名字作为主键来绑定其他信息,名字 菜单 地址 时间 状态 总价格原创 2022-01-11 11:10:14 · 324 阅读 · 0 评论 -
Java基础05 方法重载 数组 jvm内存划分
一、方法的重载原创 2022-01-11 08:53:02 · 270 阅读 · 0 评论 -
Java基础04 双重循环 方法
一、一些常用的功能Java语句1.键盘录入Scanner sc = new Scanner(System.in);System.out.println("请输入数据:");int num = sc.nextInt();//一定要定义一个变量来接受录入数据注意: 提示必须在接收变量之前且紧接声名接收变量2.数转百分数//第一种 double num = 0.16; //如果是整数类型必须先转为double类型,建议直接定义double类型System.out.println(num*100原创 2022-01-07 21:07:36 · 1306 阅读 · 0 评论 -
java基础03 进制转换 选择、循环结构
一、进制进制符号例子二进制0b(B)0b10八进制0010十进制无符号12十六进制0x(X)0x0a二进制 0 1八进制 0~7十六进制是 0~9 a~f ,a表示10,b表示11,依次类推进制转换1.其他进制转为十进制基数 *系数的权次幂之和基数即每个数字(不算符号)系数即该数是几进制即几权次幂 即从右往左数,从0开始数起例子 0b10110b是二进制,所以系数为2,从右往左开始算,最终得出11.其他进制转十进制同原创 2022-01-06 21:05:44 · 549 阅读 · 0 评论 -
java基础02 基本数据类型 ++运算符区别
编写Hello world一、开发Java流程1.编写 编写源文件 可用txt记事本 后缀改为.java2.编译 运用jdk工具包编译源文件得到字节码文件,即.class文件3.运行 运用jdk工具包运行字节码文件,得到相应的结果4.调试 找出问题bug 解决问题 debug看截图二、养成良好习惯1.左大括号之前一个空格2.左大括号后换行且缩进在写代码3.右大括号与相应的语句开头对齐三、安装idel过程中的介绍step05 项目目录介绍图中项目名也原创 2022-01-05 21:03:25 · 311 阅读 · 0 评论 -
jav基础01 jdk jre jvm 与 配置环境变量
Java基础01一、语言语言:沟通使用的语言分类:自然语言:人与人或动物之间沟通的语言计算机语言:人与计算机沟通的语言 机器语言,汇编语言,c ,java等二、起源与发展詹姆斯*穆斯林 java之父1.8,1.9jdk版本最稳定开始是sun公司,后面被甲骨文公司收购Javame 用于移动开发,安卓开发Javase 基础版 只有一些基本的语法,循环,面向对象等javaee 企业版 更高级的功能 泛型三、Java特性1.跨平台性2.编译性3. 面向对象: 封装 继承 多态5原创 2022-01-05 09:14:20 · 1078 阅读 · 0 评论 -
Java基础入门001-windos和Dos常用指令 1字节byte = 8 位bit
这里写学习Java第一天自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想原创 2021-07-02 08:30:04 · 193 阅读 · 0 评论