
JavaBasic笔记
文章平均质量分 70
工程师学徒AYG
这个作者很懒,什么都没留下…
展开
-
疯狂Java讲义_Chapter09泛型(有需要再更)
1.泛型入门2.深入泛型3.类型通配符4.泛型方法5.擦除和转换6.泛型与数组原创 2020-12-30 11:03:24 · 170 阅读 · 1 评论 -
疯狂Java讲义_Chapter10异常处理
1.异常概述2.异常处理机制3.Checked异常和Runtime异常4.使用throw抛出异常5.Java的异常跟踪栈6.异常处理规则原创 2020-12-30 10:54:55 · 258 阅读 · 2 评论 -
疯狂Java讲义_Chapter08集合
1.Java集合概述Java集合的功能:用于存储数量不等的对象; 实现常用的数据结构; 保存具有关联性的数据(map);集合类可以解决数组长度不可变导致的数据存储问题; 所有的集合类都位于java.util包下; 集合类中只能保存对象,值类型进入集合会自动装箱; Collection和Map是集合类的根接口; Set和List接口是Collection的两个子接口,分别代表无序集合和有序集合;Set中的元素不能重复; Map由key-value这种键值对数据组成,key是唯一的; 访原创 2020-12-29 09:57:03 · 278 阅读 · 0 评论 -
疯狂Java讲义_Chapter16多线程
Java多线程1.线程概述1.线程和进程 在一个系统中,每个独立运行的程序是一个进程;每个程序中有多个顺序流,称为线程; 进程的特征: 独立性:每个进程都有着自己独立的地址空间,互不影响; 动态性; 并发性:多个进程可以在单个处理器上并发执行,且互不影响; 并发性:同一时刻只能有一条指令执行,但是多个进程指令被快速轮换执行,在宏观上看起来是一起执行的效果; 并行性:同一时刻,多条指令在多个处理器上同时执行; Windows和Linux原创 2020-12-21 17:12:16 · 552 阅读 · 0 评论 -
疯狂Java讲义_Chapter07Java基础类库
Java基础类库1.与用户互动1.运行Java程序的参数 public static void main(String[] args): public:为了让JVM可以自由调用main方法; static:JVM直接通过类来调用main方法; void返回值:main方法没有返回值; args形参是JVM在调用main时传递的参数,由JVM根据命令行的输入参数执行; public class Test{ publi原创 2020-12-17 14:01:36 · 192 阅读 · 0 评论 -
疯狂Java讲义_Chapter06面向对象(下)(未更新完,有时间再更)
1.包装类包装类的产生原因是针对8种数值型变量进行封装处理,为了解决8种基本数据类型不能被当做Object类型处理; 包装类:ByteShortIntegerLongCharacterFloatDoubleBooleanJDK 1.6提供了自动装箱和自动拆箱功能自动装箱:可以把一个基本变量直接赋值给包装类或者Object类型; 自动拆箱:直接把包装类直接赋值给基本类型变量;public class AutoBoxingUnboxing{ public static原创 2020-12-15 17:26:03 · 153 阅读 · 0 评论 -
疯狂Java讲义_Chapter15输入和输出:(3)输入/输出流体系
1.处理流的用法为什么使用处理流:简化了输入/输出的操作复杂度; 使用处理流执行效率更高;使用处理流包装一个输出流:import java.io.*;public class PrintStreamTest{ public static void main(String[] args) { try ( var fos = new FileOutputStream("test.txt"); var ps = new PrintStream(fos)) { /原创 2020-12-11 10:59:35 · 125 阅读 · 0 评论 -
疯狂Java讲义_Chapter15输入和输出:(2)理解Java的IO流
1.流的分类在Java中把不同的输入/输出源抽象表述为“流stream”,stream是从source到sink的有序数据; 按照输入的流向来分类:(输入输出的考量角度是程序所在的内存)输入流:只能从中读取数据,而不能向其写入数据; 输出流:只能向其写入数据,不能读数据;按照输入数据大小:字节流:操作数据单元为8位字节; 字符流:操作数据单元为16位字节;按照流的角色:节点流:可以向一个特定设备读/写的流; 处理流:可以对已经存在的流进行封装;2.流的概念模型Java的IO流涉及原创 2020-12-07 09:15:24 · 118 阅读 · 0 评论 -
疯狂Java讲义_Chapter05面向对象(上)
1.类和对象1.定义类面向对象的三大特征:封装、继承、多态; 类的三种基本成员:方法、变量、构造方法; static修饰的成员不能访问没有static修饰的成员; Java通过new来调用构造器,从而生成实例; 如果没有显示的定义构造函数,编译器会默认生成一个构造函数; Java中的成员不是属性,Java中属性的定义是该成员拥有getter和setter方法; 定义类的代码:public class PeopleTest{ //类和接口命名遵循驼峰原则 int i;原创 2020-12-07 08:39:50 · 159 阅读 · 0 评论 -
疯狂Java讲义_Chapter15输入和输出:(1)File类
1.本章概述输入:允许程序读取外部数据、用户输入数据; 输出:程序将数据输出到磁盘、硬盘等存储介质,以及输出到对外显示设备上; JavaIO的支持主要是java.io包,包括两种流:输入流和输出流; Java的IO流分为底层节点流和上层处理流,底层节点流会根据物理获取方式有差异,但是上层处理流都是统一的,这一点和JDBC很像;2.访问文件和目录File类能够新建、删除、重命名文件和目录;但是不能访问文件内容本身; File类能够根据路径字符串来创建File实例,路径可以是相对,也可以.原创 2020-12-04 11:29:39 · 111 阅读 · 0 评论 -
疯狂Java讲义_Chapter17网络编程:(1)网络编程基础知识
1.网络基础知识通信协议的三大组成部分: 语义部分:决定双方对话的类型; 语法部分:决定双方对话的格式; 变换规则:决定通信双方的应答关系; 国际标准化组织ISO在1978年提出开放互联参考模型OSI; TCP/IP模型替代了OSI模型,TCP/IP模型包括:应用层、传输层、网络层、物理+数据链路层;2.IP地址和端口号IP地址用于唯一标识网络中的一个通信实体(主机、路由器端口); IP地址是32位数字,为了方便记忆,将其用二进制分为4个部分,再转换为十进制:192.168.1原创 2020-12-03 10:12:15 · 219 阅读 · 0 评论 -
疯狂Java讲义_Chapter04流程控制与数组
1.顺序结构顺序结构就是程序从上到下执行,没有跳转和循环;2.分支结构1.if条件语句public class IfTest { public static void main(String[] args){ int age = 20; if(age > 20){ System.out.println("true"); } else{ System.out.print原创 2020-12-02 15:37:47 · 113 阅读 · 0 评论 -
疯狂Java讲义_Chapter13MySQL数据库与JDBC编程:(4)事务处理
1.事务的概念和MySQL事务支持事务是由一步或者几步数据库操作序列组成的逻辑执行单元,这些单元中的操作要么全部执行,要么全部放弃; 事务是程序的一部分,事务包括以下特性:原子性:事务是应用中的最小单位; 一致性:事务的执行结果,必须要让数据库从一个状态转换到另一个状态; 隔离性:各个事务之间不互相干扰; 持续性:事务一旦提交,对数据所做的任何改变都要存储到数据库中;2.JDBC的事务支持数据库事务默认关闭,在jdbc中,开启事务的方法为://关闭自动提交,开启事务conn.set原创 2020-12-02 14:03:24 · 96 阅读 · 0 评论 -
疯狂Java讲义_Chapter13MySQL数据库与JDBC编程:(3)使用RowSet1.1包装结果集
RowSet继承自ResultSet接口,包括JdbcRowSet, CachedRowSet, FilteredRowSet, JoinRowSet和WebRowSet,其中后四个都是离线的,无需与数据库实时相连; RowSet默认是可滚动、可更新、可序列化的结果集; RowSet能够将底层数据库中的数据放到内存中操作,降低数据库服务器负载,这一点是向C#学习的; 1.RowSetFactory与RowSetRowSet的生成和操作方法:/*1.java7新增了Row..原创 2020-12-01 09:52:00 · 123 阅读 · 0 评论 -
疯狂Java讲义_Chapter03数据类型和运算符
一、注释1.单行注释和多行注释单行注释和多行注释的实现:public class CommentTest{/* 这是一段多行注释 多行注释在/*...*/中表示*/public static void main(String[] args){ System.out.println("this is a code") //这是一段单行注释 }}2.文档注释API文档:是一种说明文档,用于说明每个类、每个方法的用途; Java的AP.原创 2020-11-30 20:44:40 · 136 阅读 · 0 评论 -
疯狂Java讲义_Chapter02理解面向对象
1.面向对象2.UML介绍(统一建模语言)3.Java面向对象特征原创 2020-11-30 15:02:34 · 175 阅读 · 0 评论 -
疯狂Java讲义_Chapter01Java语言概述和开发环境
1.Java的发展历史Java语言是Sun公司在1995年发布的一个基于C++的编程语言; 1996年,Sun公司发布了第一个JDK:JDK 1.1; 2009年,Oracle收购Sun,获得Java的授权; 2007年,Google发布了基于Linux的移动平台:Android,Android使用Java语言作为开发语言; 2011年,Oracle发布Java SE7;2.Java的运行机制Java是一种解释型语言 编译型语言:C, C++, Object-C, Swift, Kotl原创 2020-11-30 10:39:50 · 158 阅读 · 0 评论 -
疯狂Java讲义_Chapter13MySQL数据库与JDBC编程:(2)管理结果集
1.可滚动、可更新的结果集JDBC使用ResultSet来封装执行查询得到的查询结果,通过移动RS的迭代器指针来取出结果集的内容; 可以使用absolute(), previous(), afterLast()等方法自由移动指针的RS被称为可滚动结果集; 以默认方式创建的RS是不可更新的,如果希望RS可更新,需要在创建Statement时传入额外的参数:(page631)resultSetType; resultSetConcurrency;//使用Connection创建一个Prepare原创 2020-11-30 10:07:36 · 5061 阅读 · 0 评论 -
疯狂Java讲义_Chapter13MySQL数据库与JDBC编程:(1)JDBC概念与使用方法
1.JDBC的概念JDBC的全称是Java Database Connectivity;JDBC是Java连接数据库的一组API,API与Java的接口部分是通用的,API与数据库的接口部分根据数据库的不同而不同,由厂家提供;JDBC模仿了ODBC,一种开放的数据库连接;2.JCBC常用的接口和类简介参见page6172.JDBC的连接方式使用的jar包:mysql-connector-java-8.0.22/*2.JDBC编程步骤 (原创 2020-11-30 09:20:00 · 163 阅读 · 0 评论 -
算法复杂度详解
一、定义一般情况下,算法中 基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等 于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n))为算法的渐进时间复杂度(O是数量级的符号 ),简称时间复杂度。(1)时间频度一个算法执行所耗费的时...原创 2018-05-07 17:00:12 · 725 阅读 · 0 评论 -
八皇后问题
八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。计算机发明后,有多种计算机语言可以解决此问题。...原创 2018-04-05 20:03:10 · 409 阅读 · 0 评论 -
剑指OFFER010:O(1)时间删除链表节点
public void deleteNode(ListNode head, ListNode deListNode) { if (deListNode == null || head == null) return; if (head == deListNode) { head = null; ...原创 2019-11-11 14:50:20 · 90 阅读 · 0 评论 -
剑指OFFER009打印1到最大的n位数
问题:打印1到最大的n位数解题思路:public void printToMaxOfNDigits(int n) { int[] array=new int[n]; if(n <= 0) return; printArray(array, 0); } private void printArr...原创 2019-11-10 17:15:41 · 100 阅读 · 0 评论 -
剑指OFFER008求浮点数的整数次方
问题:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。不得使用库函数,不需要考虑大数问题。解题思路:(1)三个方法:Power(基数,乘方数);multiply(基数,乘方数):遍历乘方数,用基数相乘;equal(基数,乘方数):用于边界判定;public double Power(double base, i...原创 2019-11-10 17:09:23 · 93 阅读 · 0 评论 -
剑指offer008斐波那契数列
问题:现在要求输入一个整数n,请你输出斐波那契数列的第n项。n<=39代码: public long fibonacci(int n) { long result=0; long preOne=1; long preTwo=0; if(n==0) { return preTwo; ...原创 2019-11-08 15:17:27 · 102 阅读 · 0 评论 -
剑指offer007数组旋转
问题:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。代码:public int minNumberInRotateArray(int [] array) {...原创 2019-11-08 15:12:34 · 101 阅读 · 0 评论 -
剑指offer006用两个栈来实现一个队列
问题:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。代码:public void push(int node) { stack1.push(node); } public int pop() throws Exception { if (stack1.isEmpty() && stac...原创 2019-11-08 14:51:15 · 106 阅读 · 0 评论 -
剑指OFFER005重建二叉树
问题:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解题思路:(1)输入前序遍历数组和中序遍历数组,返回树节点;(2)判断前序遍历数组和中序遍历数组的内容和长度是否为空;(3)新建一个树,起始节...原创 2019-11-06 21:00:24 · 106 阅读 · 0 评论 -
剑指OFFER004输入链表,打印链表中每个节点的值
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { ArrayList<Integer> list = new ArrayList<>(); if (listNode == null) return list; ...原创 2019-11-06 20:38:05 · 136 阅读 · 0 评论 -
剑指OFFER003替换空格
问题描述:请实现一个函数,把字符串中的每个空格替换成“%20”。例如:输入“We are happy”, 则输出“We%20are%20happy”。解题思路:(1)判断字符串是否为空;(2)创建一个StringBuilder对象;(3)遍历数组,将str中的字符复制到StringBuilder对象中;(4)如果str含有空格,StringBuilder添加%20;(...原创 2019-10-25 14:08:31 · 120 阅读 · 0 评论 -
JAVA学习知识体系
大学专业是自动化,大一到大三一直都在学习硬件方面的知识,软件方面仅仅涉猎了C,C++和一些算法。后来上了研究生,导师是做数据分析方面的,所以要转型做JAVA和C#方面的开发(项目需求)。在这里列出了JAVA进阶的两幅知识体系图。自己看的书一般有这么几类:计算机基础知识类:(1)编程之美;(2)数据结构与算法分析:JAVA语言描述;(3)Linux操作系统 and 操作系...原创 2018-04-05 16:57:10 · 757 阅读 · 0 评论 -
JAVA安装教程
JAVA安装教程准备工具JDK or JRE Eclipse(JAVA快速工作平台)安装注意JDK安装后,控制面板—高级系统设置—环境变量 用户变量:新建+JAVA_HOME:C:\Program Files\Java\jdk1.8.0_161(JDK路径) 新建+path:%JAVA_HOME%\bin(不能删除原path)...原创 2019-10-24 19:49:54 · 350 阅读 · 0 评论 -
JDK安装与配置详细图文教程
目的:本人健忘,以后难免会重装系统啥的,软件卸了装是常有的事,特此写此详细教程,一是方便自己以后重装的时候可以看看;二是如果有某位初学者有幸光临,也可以给一点参照。下面我会从JDK的下载、安装、环境变量的配置和其中的一些问题进行详细说明,Let go!一、下载 JDK是个免费的东东,所以大家不要去百度啥破解版了,直接去官网下载最新版本吧,比较安全,官网地址:http://www.o...转载 2018-04-05 16:19:14 · 117 阅读 · 0 评论 -
API,Jar包,封装的概念
API,Jar包,封装的总结一、Jar包自己在实际工作中的需要,使用Idea打包项目为可执行的jar包,网上找了好多文章但总是不成功,多次尝试后终于跑通,所以记录下来,希望可以帮助各位步骤:1. 选中Java项目工程名称,在菜单中选择 File->project structure... (快捷键Ctrl+Alt+Shift+S)。2. 在弹出的窗口中左侧选中"Art...原创 2018-09-08 20:17:55 · 3309 阅读 · 0 评论 -
Java注解的作用
注解的好处:1.能够读懂别人写的代码,特别是框架相关的代码。2.本来可能需要很多配置文件,需要很多逻辑才能实现的内容,就可以使用一个或者多个注解来替代,这样就使得编程更加简洁,代码更加清晰。3.(重点)刮目相看。(但是怎么样才能让别人刮目相看呢?会用注解不是目的,最重要的是要使用自定义注解来解决问题。)举个栗子:如果面试的时候,你跟老板说你会使用注解,老板觉得你这个人还行;但是如...转载 2018-05-20 16:29:34 · 16805 阅读 · 0 评论 -
Jsoup学习总结
本文摘抄其他博客或者技术论坛,自己搜集整理如下: Jsoup学习总结摘要Jsoup是一款比较好的Java版HTML解析器。可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。jSOUP主要功能从一个URL,文件或字符串中解析HTML; 使用DOM或CSS选择器来查找、取出数据; ...转载 2018-05-15 12:03:44 · 195 阅读 · 0 评论 -
高并发和多线程的关系
高并发和多线程总是被一起提起,给人感觉两者好像相等,实则 高并发 ≠ 多线程多线程是完成任务的一种方法,高并发是系统运行的一种状态,通过多线程有助于系统承受高并发状态的实现。高并发是一种系统运行过程中遇到的一种“短时间内遇到大量操作请求”的情况,主要发生在web系统集中大量访问或者socket端口集中性收到大量请求(例如:12306的抢票情况;天猫双十一活动)。该情况的发生会导致系统在这段...原创 2018-04-02 16:50:22 · 376 阅读 · 0 评论 -
剑指OFFER001单例模式
1.单例模式的作用单例模式保证某个类只有一个实例,而且自行实例化并向整个系统提供这个实例;2.单例模式的特点:(1)单例类只能有一个实例;(2)单例类必须自己创建自己唯一实例;(3)单例类必须给所有其他对象提供这一实例;3.单例模式的用途一般用于线程池、缓存、日志对象、对话框、驱动程序等;4.单例模式的实现4.单例模式的实现public class Sin...原创 2019-10-24 19:49:38 · 200 阅读 · 0 评论