![](https://img-blog.csdnimg.cn/b32ebe564cc742d8bf066d0a7ff5f403.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java
Java学习
一个优雅的搬砖人
猛兽总是独行,牛羊才成群结队。
展开
-
Java 学习目录
一个关于 Java 学习的目录原创 2021-12-22 15:18:12 · 386 阅读 · 0 评论 -
Java基础
Java基础知识,如有不对,欢迎赐教。原创 2021-12-21 18:36:53 · 235 阅读 · 0 评论 -
Java用户交互Scanner
之前我们学的基本语法中并没有实现程序和人的交互,但是 Java 给我们提供了这样一个工具类,我们可以获取用户的输入。java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。原创 2021-12-22 15:19:08 · 97 阅读 · 0 评论 -
Java流程控制01:顺序结构
顺序结构原创 2021-12-22 15:41:52 · 176 阅读 · 0 评论 -
Java流程控制02:if选择结构
if 选择结构原创 2021-12-22 16:03:07 · 197 阅读 · 0 评论 -
Java流程控制03:Switch选择结构
Switch 多选择结构原创 2021-12-22 16:23:01 · 187 阅读 · 0 评论 -
Java流程控制04:While循环详解
while 是最基本的循环,它的结构为:while (布尔表达式) {// 循环内容}只要布尔表达式为 true ,循环就会一直执行下去。我们大多数情况是会让循环停止下来的,我们需要一个表达式失效的方式来结束循环。少部分情况需要一直执行,比如服务器的请求响应监听等。循环条件一直为 true 就会造成无限循环(死循环),我们正常的业务编码中应该尽量避免死循环,会影响程序性能或者造成程序卡死崩溃!...原创 2021-12-29 15:24:08 · 132 阅读 · 0 评论 -
Java流程控制05:DoWhile循环
对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少要执行一次。do...while 循环和 while 循环相似,不同的是,do...while 循环至少会执行一次。语法:do {// 代码语句} while(布尔表达式);while 和 do-while 的区别:while 先判断后执行,do-while 先执行后判断 do-while 总是保证循环体至少被执行一次。...原创 2021-12-29 15:28:09 · 114 阅读 · 0 评论 -
Java流程控制06:For循环详解
虽然所有循环结构都可以用 while 或者 do...while 表示,但 Java 提供了另一种语句——for 循环,使一些循环结构变得更加简单。for 循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。for 循环执行的次数是在执行前就去确定的。语法格式如下:for (初始化;布尔表达式;更新) {// 代码语句}关于 for 循环有以下几点说明:最先执行初始化步骤。可以声明一种类型,但可以初始化一个或多个循环控制变量,也可以是空语句。然后,检测布尔表原创 2021-12-29 15:36:20 · 169 阅读 · 0 评论 -
Java流程控制07:打印九九乘法表
可以简单测试一下自己对循环的理解,做个小练习。打印九九乘法表public class Multip { public static void main(String[] args) { for (int i = 1; i <= 9; i++) { System.out.println(); for (int j = 1; j <= i; j++) { int sum = i * j;原创 2021-12-29 15:38:04 · 182 阅读 · 0 评论 -
Java流程控制08:增强for循环
这里只是先简单了解,之后数组重点使用Java 5 引入了一种主要用于数组或集合的增强型 for 循环。Java 增强 for 循环语法格式如下:for (声明语句: 表达式) {// 代码语句}声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。表达式:表达式是要访问的数组名,或者是返回值为数组的方法。...原创 2021-12-29 15:48:42 · 146 阅读 · 0 评论 -
Java流程控制09:break、continue、goto
breakbreak 在任何循环语句的主体部分,均可用 break 控制循环的流程。break 用于强行退出循环,不执行循环中剩余的语句。(break 语句也在 switch 语句中使用)continuecontinue 语句用在循环语句体,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。gotogoto 关键字很早就在程序设计语言中出现。尽管 goto 仍是 Java 的一个保留字,但并未在语言中得到正式使用;Java 没有 goto。然而原创 2021-12-29 15:59:51 · 84 阅读 · 0 评论 -
Java流程控制10:打印三角形
做个小练习。打印一个五行的三角形,样式如下:public class Triangle{ for (int i = 1; i <= 5; i++) { for (int j = 5; j >= i; j++) { System.out.print(" "); } for (int j = 1; j <= i; j++) { System.out.print("*"); .原创 2021-12-29 16:03:35 · 97 阅读 · 0 评论 -
Java方法01:什么是方法?
System.out.println(),它是什么呢?Java 方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用设计方法的原则:方法的本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的时候,最好保持方法的原子性,就是一个方法只完成一个功能,这样利于后期的扩展。...原创 2021-12-29 16:22:37 · 144 阅读 · 0 评论 -
Java方法02:方法的定义和调用
Java 的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段,一般情况下,定义一个方法包含以下语法:方法定义方法包含一个方法头和方法体。下面是一个方法的所有部分:修饰符:这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。 返回值类型:方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字 void 。 方法名:是方法的实际名称。方法名和参数表共同构成方法签原创 2021-12-29 16:34:32 · 63 阅读 · 0 评论 -
Java方法03:方法的重载
重载就是在一个类中,有相同的函数名称,但形参不同的函数。方法重载的规则:方法名称必须相同 参数列表必须不同(个数不同、或类型不同、或参数排列顺序不同等) 方法的返回类型可以相同也可以不同 仅仅返回类型不同不足以成为方法的重载实现理论:方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错。...原创 2021-12-29 16:39:07 · 139 阅读 · 0 评论 -
Java方法04:命令行传递参数
命令行传参有时候你希望运行一个程序时再传递给它消息。这要靠传递命令行参数给 main() 函数实现。原创 2022-01-04 09:21:32 · 189 阅读 · 0 评论 -
Java方法05:可变参数
JDK 1.5 开始,Java 支持传递同类型的可变参数给一个方法。在方法声明中,在指定参数类型后加一个省略号(...)。一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。...原创 2022-01-04 09:24:15 · 106 阅读 · 0 评论 -
Java方法06:递归详解
A 方法调用 B 方法,我们很容易理解!递归就是:A 方法调用 A 方法!即自己调用自己利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。递归结构包括两个部分:递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。 递归体:什么时候需要调用自身方法。例如:求阶5! =原创 2022-01-04 09:30:54 · 70 阅读 · 0 评论 -
Java数组01:什么是数组
数组的定义数组是相同类型数据的有序集合数据描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们数组下标从 0 开始如图:一支球队可以理解为一个“数组”...原创 2022-01-04 09:33:37 · 190 阅读 · 0 评论 -
Java数组02:数组的声明和创建
数组声明创建首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法:dataType[] arrayRefVar; // 首选的方法或dataType arrayRefVar[]; // 效果相同,但不是首选Java 语言使用 new 操作符来创建数组,语法如下:dataType[] arrayRefVar = new dataType[arraySize];数组的元素是通过索引访问的,数组索引从 0 开始。获取数组长度:arrays.leng原创 2022-01-04 09:37:37 · 85 阅读 · 0 评论 -
Java数组03:三种初始化及内存分析
Java 内存分析1、声明数组 int[] array = null;声明的时候数组并不存在,创建的时候才存在。2、创建数组 array = new int[10];创建时分配空间,同时数组元素都会有一个默认值。如 int 类型默认值为 0 。3、给数组元素赋值nums[0] = 1;nums[1] = 2;nums[2] = 3;nums[3] = 4;nums[4] = 5;nums[5] = 6;nums[6] = 7;nums[7.原创 2022-01-04 09:47:21 · 222 阅读 · 0 评论 -
Java数组04:下标越界及小结
数组的四个基本特点:其长度是确定的。数组一旦被创建,它的大小就是不可改变的。 其元素必须是相同类型,不允许出现混合类型。 数组中的元素可以是任何数据类型,包括基本类型和引用类型。 数据变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。数组本身就是对象,Java 中对象的在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。数组边界下标的合法区间:[0, length - 1] ,如果越界就会报错:public static void原创 2022-01-04 09:53:27 · 557 阅读 · 0 评论 -
Java数组05:数组的使用
For-Each 循环public static void main(String[] args) { int[] arrays = {1, 2, 3, 4, 5}; // JDK1.5之后,没有下标 for (int array : arrays) { System.out.print(array + " "); }}运行结果:1 2 3 4 5数组作方法入参public static void main(String[]原创 2022-01-04 09:55:39 · 67 阅读 · 0 评论 -
Java数组06:多维数组
多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组。二维数组int a[][] = new int[2][5]解析:以上二维数组 a 可以看成一个两行五列的数组。// [4][2]/* 1,2 array[0] 2,3 array[1] 3,4 array[2] 4,5 array[3]*/int[][] array = {{1,2}, {2,3}, {3,4}, {4,5}};// 遍历输原创 2022-01-04 09:58:05 · 83 阅读 · 0 评论 -
Java数组07:Arrays类详解
Arrays 类数组的工具类 java.util.Arrays 由于数组对象本身并没有什么方法可以供我们使用,但 API 中提供了一个工具类 Arrays 供我们使用,从而可以对数组对象进行一些基本的操作 查看 JDK 帮助文档 Arrays 类中的方法都是用 static 修饰的静态方法,在使用的时候可以直接使用类名进行调用,而“不用”使用对象来调用(注意:是“不用” 而不是“不能”)具有以下常用功能:给数组赋值:通过 fill 方法 对数组排序:通过 sort 方法,按升序。 比较数原创 2022-01-04 10:03:00 · 300 阅读 · 0 评论 -
Java数组08:冒泡排序
冒泡排序无疑是最为出名的排序算法之一,总共有八大排序!冒泡的代码还是相当简单的,两层循环,外层冒泡轮数,里层依次比较,江湖中人尽皆知。我们看到嵌套循环,应该马上就可以得出这个算法的时间复杂度为 O(n2) 。// 冒泡排序// 1、比较数组中两个相邻的元素,如果第一个数比第二个数大,就交换它们的位置// 2、每一次比较都会产生一个最大或者最小的位置// 3、下一轮则可以少一次排序// 4、依次循环,直至结束public class test { public s.原创 2022-01-07 10:22:19 · 434 阅读 · 0 评论 -
Java数组09:稀疏数组
需求:编写五子棋游戏中,有存盘退出和续上盘的功能。分析问题:因为该二维数组的很多值是默认值 0 ,因此记录了很多没有意义的数据。解决办法:稀疏数组稀疏数组介绍当一个数组中大部分元素为 0 ,或者为同一值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方式是:记录数组一共几行几列,有多少个不同值 把具有不同值的行列及值记录在一个小规模的数组中,从而缩小程序的规模如下图,左边是原始数组,右边是稀疏数组其中 [0] 是说明稀疏数组共 6 行 7 列 8 个值原创 2022-01-07 10:34:49 · 308 阅读 · 0 评论 -
Java面向对象01:什么是面向对象
面向过程 & 面向对象面向过程思想 步骤清晰简单,第一步做什么,第二步做什么...... 面向过程适合处理一些较为简单的问题面向对象思想 物以类聚,分类的思维模式,思考问题首先思考解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。面向对象适合处理复杂的问题,适合处理需要多人协作的问题!对于描述复杂的事物,为了从宏观上把握、从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。...原创 2022-01-07 15:20:07 · 54 阅读 · 0 评论 -
Java面向对象02:回顾方法的定义
// Demo01 类public class Demo01 { // main 方法 public static void main(String[] args) { } /* 修饰符 返回值类型 方法名(...) { // 方法体 return 返回值; } */ public String sayHello() { return "hello world"; .原创 2022-01-07 15:22:54 · 154 阅读 · 0 评论 -
Java面向对象03:回顾方法的调用
静态方法 static :可以直接通过 类名.方法名 调用非静态方法:需要实例化类进行调用 new 类.方法名public class Demo02{ public static void main(String[] args) { // 静态方法调用 Student.talk(); // 非静态方法调用 需要先实例化类 // 对象类型 对象名 = 对象值; Student student = new Stu原创 2022-01-07 15:49:48 · 163 阅读 · 0 评论 -
Java面向对象04:类与对象的创建
类与对象的关系类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表某一个具体的事物。动物、植物、手机、电脑…… Person 类、Pet 类、Car 类等,这些类都是用来描述/定义某一类具体的事物应该具备的特点和行为对象是抽象概念的具体实例张三就是人的一个具体实例,张三家里的旺财就是狗的一个具体实例 能够体现出特点,展现出功能的是具体的实例,而不是一个抽象的概念创建与初始化对象使用 new 关键字创建对象使用 new 关键字创建的时候,除了分配内存空间之外,原创 2022-01-07 15:56:56 · 77 阅读 · 0 评论 -
Java面向对象05:构造器详解
// Person.javapublic class Person { // 一个类即使什么都不写,它也会存在一个方法 // 显示的定义构造器 String name; // 1、使用 new 关键字,本质是在调用构造器 // 2、用来初始化值 public Person() {} // 有参构造:一旦定义了有参构造,无参就必须显示定义 public Person(String name) { this..原创 2022-01-07 16:03:32 · 202 阅读 · 0 评论 -
Java面向对象06:创建对象内存分析
首先创建一个 Pet 类,在 Application 类中引用。public class Pet { public String name; public int age; public void shout() { System.out.println("叫了一声"); }}public class Application { public static void main(String[] args) { P原创 2022-01-10 17:11:35 · 155 阅读 · 0 评论 -
Java面向对象07:简单小结类与对象
1、类与对象类是一个模板:抽象,对象是一个具体的实例2、方法定义、调用!3、对应的引用引用类型和基本类型(8)对象是通过引用来操作的:栈 --> 堆(地址)4、属性:字段 Field 成员变量默认初始化:数字: 0、0.0char:u0000boolean:false...原创 2022-01-10 17:15:46 · 148 阅读 · 0 评论 -
Java面向对象08:封装详解
核心思想我们程序设计要追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合是仅暴露少量的方法给外部使用。封装(数据的隐藏) 通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。记住这句话就够了:属性私有,get / set// 类 private:私有public class Student { // 属性私有 private String name; ...原创 2022-01-10 17:30:50 · 59 阅读 · 0 评论 -
Java面向对象09:什么是继承
继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模。extends 的意思是“扩展”。子类是父类的扩展。Java 中类只有单继承,没有多继承!(通俗理解:一个儿子只能有一个爸爸,一个爸爸可以有多个儿子。)继承是类和类之间的一种关系。除此之外,类和类之间的关系还有依赖、组合、聚合等。继承关系的两个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字 extends 来表示。子类和父类之间,从意义上将应该具有 “is a” 的关系。// 人:父类、基类原创 2022-01-10 17:45:34 · 236 阅读 · 0 评论 -
Java面向对象10:Super详解
调用父类属性public class Person { protected String name = "kuangshen";}public class Student extends Person { private String name = "qinjiang"; public void test(String name) { System.out.println(name); System.out.println(th原创 2022-01-10 18:03:11 · 161 阅读 · 0 评论 -
Java面向对象11:方法重写
方法重写,顾名思义是方法的重写,属性之间不能重写。重写时子类的方法和父类必须要一致,方法体不同。为什么需要重写?因为父类的功能,子类不一定需要,或者不一定满足。原创 2022-01-11 09:05:01 · 338 阅读 · 0 评论 -
Java面向对象12:什么是多态
即同一方法可以根据发送对象的不同而采用多种不同的行为方式。一个对象的实际类型是确定的,但可以指向对象的引用类型有很多多态存在的条件有继承关系 子类重写父类方法 父类引用指向子类对象注意:多态是方法的多态,属性没有多态。多态例子首先定义一个 Person 类,里面定义一个 run() 方法public class Person { public void run() { System.out.println("run"); }}原创 2022-01-11 09:22:22 · 313 阅读 · 0 评论