JAVASE学习笔记2021
从零开始学习JAVA到可以就业的水平
广东码农
这个作者很懒,什么都没留下…
展开
-
2021-4-11-3 缓存流(处理流的一种)
为什么用处理流节点流对比处理流的话,效率会差点,所以我们使用处理流。处理流之一——缓冲流注意,处理流是在节点流的基础之上再作用的。也就是说处理流不能直接作用在文件上,必须要有节点流。import java.io.*;public class BufferInOutTest { public static void main(String[] args) throws IOException { //1. File路径 File srcFile = new原创 2021-04-12 16:18:14 · 100 阅读 · 0 评论 -
2021-4-11-2 FileInputStream、FileOutPutStream复制非文本文件
throws版import java.io.*;public class FileInputOutCopy { public static void main(String[] args) throws IOException { //1. 创建File File srcFile = new File("Hello\\src\\io\\wukong.jpg"); File destFile = new File("Hello\\src\\io\\原创 2021-04-11 15:06:03 · 41 阅读 · 0 评论 -
2021-4-11-1 FileInputStream读取文本文件可以能会乱码
txt你好,世界!java,5个byte读一次import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;public class FileInputStreamTest { public static void main(String[] args) throws IOException { //原创 2021-04-11 14:45:09 · 211 阅读 · 0 评论 -
2021-4-9-2 使用FileReader和FileWriter实现文件复制
123原创 2021-04-11 12:35:02 · 121 阅读 · 0 评论 -
2021-4-9-1 FileReader.read()重载
import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;public class FileInputStreamTest1 { public static void main(String[] args) throws IOException { //1. File的实例化 File file =原创 2021-04-09 14:52:48 · 94 阅读 · 0 评论 -
2021-4-8-8 IO流(尚585节开始)
IO流概念input、output。什么是input、output可以去回顾一下冯诺依曼结构。其实就是内存和外存之间写入和写出就是一 个个“流”(说成数据流可能好理解一点)。也可以扩展成主机与主机之间通讯,你给我传输数据,我给你传输数据,也可以理解为一个个“流”。输入input:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中。(因为我们是以“内存”的角度是看的,对与“内存而言”,就是输入。当然,如果是以“外存”的角度,就是输出啦。主要是理解“输入”、“输出”是一个相对的概念)输出ou原创 2021-04-09 12:28:58 · 53 阅读 · 0 评论 -
2021-4-7-2 异常02:捕获和抛出异常
异常处理五个关键字try、catch、finally、throw、throws两种异常处理机制1. 捕获import java.util.Scanner;public class Application { public static void main(String[] args) { Scanner text = new Scanner(System.in); try {//try用来监控区域 int password = t原创 2021-04-07 16:38:03 · 141 阅读 · 0 评论 -
2021-4-7-1 异常01:Error和Exception
什么是异常?实际工作中,我们的程序不可能每次都运行得很完美的。比如:某段代码需要用户输入一个数字,但是他输入了一个字符串;某段代码需要打开一个文件,文件不存在或者文件格式不对;读取数据库,数据是空的… …这些我们就称之为异常,英文是Exception,意为例外。这些例外的情况,我们的程序怎么样处理才能继续运行下去,而不至于程序崩溃。检查性异常的分类检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单原创 2021-04-07 14:39:52 · 174 阅读 · 2 评论 -
2021-4-6-2 面向对象16:内部类
首先说一下,本节东西都是些奇葩东西,不符合规范的,但是还是要知道,以防以后不会看别人的奇葩代码。什么是内部类、外部类内部类就是在一个类的内部在定义一个类,比如,A类中定义一个B类,那么B类相对A类来说就称为内部类,而A类相对B类来说就是外部类了。public class Outer { private int id = 123 ; public void test(){ System.out.println("外部类的方法。"); } public原创 2021-04-07 13:50:37 · 114 阅读 · 1 评论 -
2021-4-6-1 面向对象15:接口
对比学习普通类:只有具体实现(指方法)抽象类:有具体实现(具体实现的方法)也有规范(指抽象方法)接口:只有规范!或者说只有约束!为的就是约束和实现分离:面向接口编程。(大型的开发中都是先把接口设计好、文档定义好之后,才去找码农去实现(比如外包公司))接口就是规范,定义的是一组规则,体现”如果你是…那你必须…“的思想。接口的本质是契约,就像法律一样,制定好后大家必须去遵守。OO的精髓,是对对象的抽象,最能体现这一点的就是接口。为什么我们讨论设计模式都是具备抽象能力的语言(比如c++、java、c原创 2021-04-06 16:13:52 · 78 阅读 · 0 评论 -
2021-4-5-3 面向对象14:抽象类
abstract来修饰类就是抽象类,abstract修饰的方法就是抽象方法public abstract class Animal { //①抽象方法只能存在于抽象类中 public abstract void eat(); //②抽象类也可以存在正常的方法 public void introduceSelf(){ System.out.println("我是动物。"); }}public class Cat extends Animal { //③子原创 2021-04-05 16:44:22 · 34 阅读 · 0 评论 -
2021-4-5-2 面向对象13:static讲解
静态方法区我们在“创建对象内存分析”那节当中就讲过了静态方法区的东西。静态方法区,主要存放的是static修饰的东西(属性、方法、代码块…),static修饰的东西是随它所在的这个类一起加载的,也就是说我们不需要区实例化它也能用,只要类加载了就行。1. 属性public class Student { private int age = 1; public static int id = 123;}public class Application { public stati原创 2021-04-05 16:15:29 · 38 阅读 · 1 评论 -
2021-3-31-5 面向对象09:super关键词
super关键词可以和this关键词比较学习。this关键词表示“这个类”/“这个对象”super关键词则表示“这个类的父类”,所以super只能用在子类当中代码//Animal作为父类public class Animal { String name = "动物";}//Cat作为子类,继承Animalpublic class Cat extends Animal{ private String name = "小黑"; public void test()原创 2021-04-05 15:52:22 · 54 阅读 · 1 评论 -
2021-4-5-1 面向对象12:instanceof
类关系图public class Animal {}public class Botany {}public class Person extends Animal {}public class Cat extends Animal{}public class Student extends Person {}public class Teacher extends Person {}public class Application { public stat原创 2021-04-05 13:40:36 · 78 阅读 · 1 评论 -
2021-4-1 面向对象11:多态
一,现实意义现实事物通常会有多种状态,比如我是一个动物(Animal),但同时我也是一个哺乳动物(Mammal),我又可以说是一个人(Person),我还可以说是一个学生(Student)…但有什么意义呢?实现对现实世界的抽象。这样就可以描述一个事物的多种形态了。比如Animal都会eat(),但是Dog的eat(),是eat(System.out.println(“吃狗粮”));Person的eat(),是eat(System.out.println(“吃饭”))Java构成多态的三原创 2021-04-03 15:13:48 · 82 阅读 · 0 评论 -
2021-4-1-1 面向对象10:方法重写
代码1public class FatherA { public static void Say(){ System.out.println("我是爸爸。"); }}public class SonB extends FatherA{ public static void Say(){ System.out.println("我是儿子。"); }}public class Application { public stat原创 2021-04-01 15:01:03 · 47 阅读 · 0 评论 -
2021-3-31-4 面向对象08:继承
继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模。extends的意思是“扩展”。子类是父类的扩展。JAVA中类只有单继承,没有多继承!继承是类和类之间的一种关系。除此之外,类和类之间的关系还有依赖、组合、聚合等。继承关系的俩个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字extends来表示。子类和父类之间,从意义上讲应该具有"is a"的关系.代码//Person作为父类public class Person { public String s.原创 2021-03-31 15:08:08 · 85 阅读 · 0 评论 -
2021-3-31-3 面向对象07:封装详解
该露的露,该藏得藏我们程序设计要追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。就像一台电视机,我们是产家,我们不需要让用户知道电视机里面是怎样做的,什么电路啊、什么电子元件啊,用户不需要知道。我们只需要暴露几个接口给用户去使用就行了。封装(数据的隐藏)通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。记住这句话就够了:属性私有,get/setpublic class Applicatio.原创 2021-03-31 14:27:00 · 40 阅读 · 0 评论 -
2021-3-31-2 面向对象06:面向对象小结
1.类与对象类是一个模板:抽象,对象是一个具体的实例2.方法定义、调用!3.对应的引用引用类型:基本类型(8)对象是通过引用来操作的:栈—>堆4。属性:字段Field 成员变量默认初始化:数字:0.0char : u0000boolean:false引用: nuLL修饰符属性类型属性名=属性值!5。方法:...原创 2021-03-31 12:39:40 · 47 阅读 · 0 评论 -
2021-3-31-1 面向对象05:创建对象内存分析
代码public class Application { public static void main(String[] args) { Cat myFirstPet = new Cat(); myFirstPet.name="小黑"; myFirstPet.actCute(); }}public class Cat { public String name; public int age; public v原创 2021-03-31 12:32:05 · 44 阅读 · 0 评论 -
2021-3-30-4 面向对象04:构造器
直接看例子这里是Student类public class Student { //属性 String name; int age; //无参构造器 public Student(){} //有参构造器 public Student(String name){ this.name = name; } //方法 public void study(){ System.out.println(原创 2021-03-30 15:02:32 · 40 阅读 · 0 评论 -
2021-3-30-3 面向对象03:类与对象的创建
类是对某一种事物的抽象,是对现实的抽象。但并不能代表实际事物。从现在开始,我们就不要在每一个类里面都搞一个main方法了,每一个项目应该只存在一个main方法。这里我们将main方法放到Application类里面。public class Application { public static void main(String[] args) { }}来个对象创建的例子吧public class Student { //属性 String n原创 2021-03-30 14:42:17 · 34 阅读 · 0 评论 -
2021-3-30-2 面向对象02:回顾方法的调用
//学生类public class Student { public static void say(){ System.out.println("偷偷说话了!"); say2();//这里会报错 } public void say2(){ }}static的意思就是随类一起加载的意思而say2是随对象实例化的时候产生,所以一个static存在的东西,调用一个还不存在的say2,所以会报错。//引用传递:对象,本质还是值传递原创 2021-03-30 14:27:03 · 48 阅读 · 0 评论 -
2021-3-30-1面向对象01:什么是面向对象
OOP(Object Oriented Programming):面向对象编程OO(Object Oriented):面向对象一,面向过程面向过程是线性思维步骤清晰,第一步,第二步面向过程适合解决一些简单的问题二,面向对象物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。面向对象适合处理复杂的问题,适合处理需要多人协作的问题!对于描述复杂的事物,为了从宏观上把握、从整体上合理分析,我们需要使用面向原创 2021-03-30 12:35:53 · 46 阅读 · 0 评论 -
2021-3-29-1 Java数组06:稀疏数组
本节内容参考:https://blog.csdn.net/weixin_41922289/article/details/94555391一,稀疏数组1. 定义稀疏数组(百科上称为稀疏矩阵)(存在大量无效数据,例子这里的是“0”)0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 2 0 压缩稀疏数组(无效数据没有占用实际的存储空间)行 列 值3 6 2 //原数组:3行 6列 2个有效值1 2 1 //原数组:1行 2列 有效值为12 4 2 //原创 2021-03-30 11:46:27 · 56 阅读 · 1 评论 -
2021-3-27-4 Java数组05:冒泡排序
有八大排序,详情请去学数据结构这里说下冒泡排序//我理解冒泡排序,主要分两层去理解//总共有n个数//1. 我需要冒几次泡才能排齐所有数呢?(冒一个泡的意思就是说,在还没排的数里面,选出最大的数放到最右边),答案是n-1次。/*2. 每冒一个泡,我需要比较多少次才能冒出这个泡呢?第一个泡的时候,是比较次数最多的,总共需要比较n-1次;冒第二个泡的时候,比较次数就比上次少一次了,为n-1-1;第三个泡,n-1-2;以此类推。*///我想到时候有时间做个视频进行讲解,有时间再做吧。//下面给原创 2021-03-27 21:38:23 · 54 阅读 · 0 评论 -
2021-3-27-3 Java数组04:Arrays类
可以在官方文档中Ctrl+F查找Arrays,官方文档在JavaDoc那节就讲过在哪了。https://www.oracle.com/cn/java/technologies/java-se-api-doc.html,不过他们有中文离线版的,我不知道他们哪里弄到的。另:java.util.Arrays,util为java的工具包。import java.util.Arrays;public class Array5 { public static void main(String[] args原创 2021-03-27 15:54:43 · 49 阅读 · 0 评论 -
2021-3-27-2 Java数组03:二维数组
先来看看一维数组public class Array4 { public static void main(String[] args) { //声明创建一个一维的数组 int[] array1 = {1,2,3,4,5,6}; }}//不但在java里,在其他编程语言里,数组都占用连续的内存空间用图来表示二维数组public class Array4 { public static void main(String[] args) {原创 2021-03-27 15:17:14 · 38 阅读 · 0 评论 -
2021-3-27-1 Java数组02:数组的使用
public class Array3 { public static void main(String[] args) { int[] myArray = {1,2,3,4,5,6,7,8}; //打印数组所有元素 System.out.print("数组里面的元素有:"); for (int i = 0; i < myArray.length ; i++) { System.out.print(myA原创 2021-03-27 14:51:46 · 54 阅读 · 0 评论 -
2021-3-26-4 Java数组01:数组
数组的声明、创建public class Array1 { public static void main(String[] args) { //这是一种声明方法,推荐用这种 int[] a; //这也是一种声明方法,跟c、c++一样,是早期java为了使c/c++程序员尽快适应java语法 int b[]; //数组的创建。给数组a分配10个int空间 a = new int[10];原创 2021-03-26 13:06:17 · 51 阅读 · 1 评论 -
2021-3-26-3 Java方法05:递归调用
递归的意思就是:自己调用自己。递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。递归体:什么时候需要调用自身方法。public class Demo04 { public static void main(String[] args) { Demo04 calcM = new Demo04(); System.out.println(calcM.factorial(5)); } //计算n的阶乘 public int facto原创 2021-03-26 12:06:38 · 55 阅读 · 0 评论 -
2021-3-26-2 Java方法04:可变参数
JDK5开始,java开始支持可变参数在声明方法的时候,在指定类型的参数后面加(…)一个方法只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明实例package method;public class Demo03 { public static void main(String[] args) { Demo03 test = new Demo03(); System.out.println(test.add(1,2,3,4)原创 2021-03-26 11:29:44 · 41 阅读 · 0 评论 -
2021-3-26-1 Java方法03:命令行传参
我们的main方法是可以传递参数的public static void main(String args[]) {}//String args[]就是形参,也可以写String[] args实例源码package method;public class Demo02 { public static void main(String[] args) { for(String i:args){ System.out.print(i+" ");原创 2021-03-26 11:15:59 · 32 阅读 · 0 评论 -
2021-3-25-7 Java方法02:方法的重载
重载的意思就是:在一个类中,有相同的函数名称,但形参不同的函数。方法重载的规则:方法名称必须相同参数列表必须不同(参数的个数、参数的类型、参数的排列顺序不同等)方法的返回类型可以相同也可以不相同仅仅返回类型的不同不足以称为方法的重载...原创 2021-03-25 22:14:07 · 32 阅读 · 0 评论 -
2021-3-25-6 值传递和引用传递
值传递(pass by value)是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。引用传递(pass by reference)是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。...原创 2021-03-25 21:58:01 · 32 阅读 · 0 评论 -
2021-3-25-5 Java方法01:什么是方法?
方法是某些语句的集合,执行这些语句,我们可以解决某一类问题。(其实就是封装,把一堆语句封装成一个方法/函数)public class Demo01 { //main方法 public static void main(String[] args) { int sum = add(1,2); System.out.println(sum); } //加法 public static int add(int a,int b){原创 2021-03-25 17:17:52 · 36 阅读 · 0 评论 -
2021-3-25-4 Java流程控制09:打印三角形,Debug
打印三角形//打印5行三角形public class Triangle { public static void main(String[] args) { double x = 0; for (int i=1; i<=5; i++){ for (int j=5; j>=i; j--){ System.out.print(' '); } for (原创 2021-03-25 16:50:17 · 60 阅读 · 0 评论 -
2021-3-25-3 Java流程控制08:break、continue、goto
break跳出整个循环//循环到i==35之后就不继续循环了for(int i=0;i<100;i++){ System.out.println(i); if(i==35){ break; }}continue跳过本次循环//输出1到100之间的奇数public class ContinueStruct { public static void main(String[] args) { for (int i =1; i<=100; i++) {原创 2021-03-25 15:17:08 · 35 阅读 · 0 评论 -
2021-3-25-2 Java流程控制07:增强for循环
1. JDK5中引入的2. 局部变量的类型必须和数组/集合中元素的类型对应for(声明变量 : 数组/集合){//语句}public class ForStruct2 { public static void main(String[] args) { int[] i = {1,2,3}; for(int j:i){ System.out.println(j); } }}...原创 2021-03-25 15:08:45 · 56 阅读 · 0 评论 -
2021-3-25-1 Java流程控制06:打印九九乘法表
//打印九九乘法表//扩展知识,java的printf输出对齐,%2d表示输出的数字占2位数字的位置,-表示左对齐//参考:https://blog.csdn.net/qq_31918961/article/details/99500953public class MultiplicationTable { public static void main(String[] args) { for (int i = 1; i <= 9; i++) {原创 2021-03-25 14:55:17 · 67 阅读 · 0 评论