![](https://img-blog.csdnimg.cn/20201224123754688.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java语法
文章平均质量分 74
对Java的语法认识学习
无赖H4
人丑嘴不甜,长得难看又没钱!
展开
-
汉诺塔问题的递归求解
汉诺塔问题的递归求解汉诺塔解题思路具体实现汉诺塔汉诺塔汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。解题思路当只有一个盘子的时候,只需要移动1次,即:从第一根移动到第二根。当有两个盘子的时候,需要移动3次,即:从第一根移动到第二根,原创 2021-03-04 22:19:43 · 861 阅读 · 11 评论 -
贪吃蛇小游戏的简单实现——Java
贪吃蛇贪吃蛇源码:贪吃蛇贪吃蛇这一款小游戏,在以前的诺基亚手机中基本都会带有这款,曾经风靡一时。那么我们如何将这一款小游戏实现出来呢?在这里,我们会使用到javaFX图形化编程,将图形化界面打印出来,通过用户的实际操作,来控制游戏,如下图:这就是,游戏最终实现的情况。我们可以通过蛇的速度来控制游戏难度,通过控制方向左右移动,实现游戏的逻辑,最后完成。首先我们会导入很多的包,大多数都是javafx的,因为需要图形化界面,我们需要导入它,javafx是jdk自带的。import javafx.原创 2021-02-10 16:55:05 · 3450 阅读 · 4 评论 -
内部类的了解
内部类静态内部类非静态内部类匿名类总结在Java中,可以把一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。广泛意义上的内部类一般来说包含四种:静态内部类、匿名内部类、成员内部类和局部内部类。public class A{ class B{ }}注意:定义在class类名{}花括号外部的,即使是在一个文件里,也不是内部类了静态内部类静态内部类的定义:public class Test{ static class B{ }}和静态变量、静态方法类似,静态内部类也原创 2021-02-03 15:08:45 · 741 阅读 · 5 评论 -
泛型的了解
泛型泛型的定义为什么需要泛型引入泛型Java中引入泛型的原因:泛型的概念泛型类的定义泛型类的实例化注意:泛型接口通配符-上下界上界:下界:类型擦除规则泛型的定义为什么需要泛型当我们进行一些和类型无关的计算的时候,例如:排序、二分查找等算法。或者类似的场景的时候,允许算法中的一个或者多个类型变化起来(——类型变量)。例如:定义了一个int型的排序算法,那么它只能排序int型的,对于double、String型都无法实现。引入泛型Java中引入泛型的原因:Object引用可以指向Java中所有的原创 2021-02-02 19:45:54 · 643 阅读 · 1 评论 -
认识异常exception
认识异常exception异常exception异常exception原创 2021-02-02 09:06:07 · 761 阅读 · 0 评论 -
对象与对象间的比较
对象间的比较对象间如何进行比较相等 equals职责定义重写equals不等 compaerTo/comparecompareTo实现compare对象间如何进行比较在Java中,我们只能通过引用去访问对象,但是引用没办法使用">’’ ,"<" 进行比较。即使通过“ = =”和“!=”比较,也不是进行对象间的比较,而是判断是否指向同一对象。相等 equals对象间如何进行 相等 OR 不等的比较呢,我们可以使用 equals方法。在Object类中,提供了equals方法。返回 tr原创 2021-02-01 16:16:52 · 1894 阅读 · 9 评论 -
抽象(abstract)和接口(interface)——Java
抽象和接口抽象(abstract)抽象类抽象方法总结:接口(interface)接口的定义:接口中的方法类的声明实现接口使用接口和继承不同抽象(abstract)抽象是一种思维方式,抽取出“公共”的部分出来。越抽象的思维,涵盖的范围越大越具体的思维,可以落地的可能性越大。抽象类专门有一种类,被称为抽象类——这些无法实例化出对象通过abstract(抽象)修饰类的定义public abstract class Test {}抽象类无法实例化对象,如:抽象方法抽象方法——定义在父类中原创 2021-01-30 15:21:09 · 795 阅读 · 4 评论 -
final关键字
目录final关键字修饰变量的定义修饰类的定义修饰类中的普通方法总结:final关键字final关键字主要有3种作用:1、修饰变量的定义2、修饰类的定义3、修饰类中的普通方法修饰变量的定义当使用final修饰变量的时候(属性/静态属性/形参变量/局部变量),变量仅允许一次赋值机会,就不能被改变了。例如:final int a = 10;final int b;b = 20;当变量a=10,被final修饰后,就不能被修改a的值,如果修改,会报错不能完成编译。我们知道,当局部变量定原创 2021-01-29 14:29:59 · 676 阅读 · 1 评论 -
访问限定符的初认识
访问限定符privatedefaultprotectedpublic总结注意:在Java中对于字段和方法共有4中访问限定符分别是——private、default、protected、publicprivateprivate,在类的内部能访问,类的外部不能访问例如:当用private修饰属性或方法后,就只能在本类中使用。default默认,也叫包访问权限:类的内部能访问,同一个包中的类可以访问,其他类不能访问。例如:当什么都不加的时候,就是默认权限,它可以在同一类中实现,也可以在同原创 2021-01-27 20:38:34 · 1019 阅读 · 7 评论 -
String类中的常用方法的使用
String认识String类常见构建String类的方式String常见方法length()charAt()toCharArray()indexOf()lastIndexOf()substring()replace()split()static join()toLowerCase()toUpperCase()contains()concat()statsWith()endsWith()trim()字符串的比较1、==2、equals()和equalsIgnoreCase()3、compareTo()和co原创 2021-01-27 08:55:54 · 1726 阅读 · 5 评论 -
static关键字和类的加载的初始化顺序
目录static关键字修饰属性修饰方法静态属性的初始化注意类的加载代码示例分析结果:总结:static关键字static的主要作用有:修饰属性修饰方法代码块修饰类修饰属性Java静态属性和类相关,和具体的实例无关,换句话说,同一个类的不同实例共用一个静态属性。例如:class Demo{ public int a; public static int count; } public static void main(String[]原创 2021-01-26 11:38:56 · 1261 阅读 · 0 评论 -
this关键字
目录this的作用this引用为什么有this什么是this引用this引用的特性:this通过this调用属性通过this调用类中的方法通过this调用自身的构造方法this的作用this的作用1——当成引用使用,其类型变化,(看出在那个类型中)指向对象变化(看通过那个对象调用方法)this的作用2——用在构造方法中,调用其他构造方法this的类型取决于出现在那个类型中。在没有歧义的情况下,使用“大名/小名”都可以,但在有歧义的情况下,必须使用thisthis引用为什么有this当我们创建原创 2021-01-26 09:30:24 · 1349 阅读 · 5 评论 -
Java中的类的定义和初始化
目录类的定义类的定义格式类的成员字段/属性/成员变量方法类的实例化类的初始化类的定义类的定义格式//创建类class ClassName{ field ;//成员属性/字段 method;//方法}class为定义类的关键字,ClassName为类的名字,{ }为类的主体;例如:class Person{ public String name ; //成员属性 public int age; public void eat(){ // 方法 System.out.print原创 2021-01-25 10:18:25 · 1536 阅读 · 0 评论 -
面向对象的思维实现二分查找
目录一维数组代码:具体结果:二维数组解法1:代码:具体结果:解法2:代码:一维数组首先我们关注点就需要分离,我们只需要考虑需要用什么,而不需要考虑他如何去实现,我们先写出二分查找的逻辑:当查找一维数组的时候,如果找到了,就返回下标,如果未找到,返回-1;然后我们将区间抽象出来:然后具体实现区间:代码:class Range { private final int[] array; private int left; private int right; publ原创 2021-01-23 20:21:31 · 706 阅读 · 1 评论 -
用面向对象和面向过程思想解决两个日期间隔的天数和两个时间之间间隔秒数以及两个时间的间隔
目录两个日期间隔的天数类的实现类的源码:具体调用:具体结果:两个时间之间间隔秒数类的定义:类的调用具体结果两个日期间隔的天数类的实现求解两个日期间,间隔的天数,我们可以利用面向对象的思想,将日期抽象出3个属性:year,month,day。public class MyDate { public int year; public int month; public int day;}在类中,建立MyDate的构造函数,public MyDate(int year, int原创 2021-01-21 20:41:24 · 843 阅读 · 3 评论 -
引用类型初认识和方法传参
引用类型初认识引用(reference)和对象(object)引用和对象之间的关系理解引用和对象之间的关系引用指向对象的一些规则null的理解引用的赋值操作符理解引用的比较操作符理解解引用操作符引用的 ==.== 操作符理解数组类型引用的 ==[ ]== 操作符理解引用操作对象表现出的"共享"性NUllPointerException异常总结:引用(reference)和对象(object)1、Java中没有指针和地址的概念2、其中一种视角——引用和对象都是内存中数据的一种规定的组织方式。Java中原创 2021-01-19 10:24:13 · 735 阅读 · 0 评论 -
Java中数组的定义和使用
数组数组的基本用法1、什么是数组2、数组的定义2.1创建数组:2.2类型所对应的“0”值3、数组的使用3.1获取长度,访问元素3.2 下标越界问题3.3 遍历数组for循环遍历for-each遍历数组两种遍历的比较4、二维数组不规则使用:5、数组的练习:数组的基本用法1、什么是数组数组的本质上,就是让我们能“批量”创建相同类型的变量。即:相同类型的集合。注意:在Java中,数组中包含的变量必须是相同类型。2、数组的定义2.1创建数组://动态初始化数据类型[ ] 数组名称 = new 数据类原创 2021-01-18 10:19:20 · 897 阅读 · 0 评论 -
Java实现冒泡排序——一看就会
目录冒泡排序代码实现:优化具体实现:更高效的方法冒泡排序冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。例如:将一个无需的原创 2021-01-17 10:02:38 · 847 阅读 · 0 评论 -
Java实现二分查找,查询数组中的元素
折半查找法折半查找法具体实现1、主函数内部实现2、定义方法,并调用:3、调用Arrays中的binarySearch方法:总结折半查找法折半搜索(英语:half-interval search),也称二分搜索(英语:binary search)、对数搜索(英语:logarithmic search),是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,原创 2021-01-16 19:52:09 · 1862 阅读 · 8 评论 -
Java中Arrays的3中常见用法—— toString、binarySearch、copyOf
Java中Arrays的3中常见用法ArraystoString()用法:binarySearch()用法:copyOf()用法:总结ArraysArrays类位于 java.util 包中,主要包含了操纵数组的各种方法使用时导包:import java.util.ArraysArrays有许多的方法:我们最常用的3种方法是:toString()、copyOf()、binarySearch()。toString()toString()的主要作用是,将数组格式化打印输出,下图是它主要的方法:原创 2021-01-15 20:59:37 · 1007 阅读 · 7 评论 -
LeetCode题库1556千位分隔数
目录题目描述:题目分析:题目实现:注:题目描述:给你一个整数 n,请你每隔三位添加点(即 “.” 符号) 作为千位分隔符,并将结果以字符串格式返回。示例 1:输入:n = 987输出:“987”示例 2:输入:n = 1234输出:“1.234”示例 3:输入:n = 123456789输出:“123.456.789”示例 4:输入:n = 0输出:“0”题目分析:本题:主要是将一个数,每三位通过小数点(.)进行分割,但是我们需要注意的是,1、当输入的数据小原创 2021-01-02 13:16:42 · 970 阅读 · 3 评论 -
初识JVM内存区域的划分
初识JVM内存区域的划分初识JVM内存区域的划分总结:初识JVM内存区域的划分我们只带,当Java源代码(.java)文件被编译后,会变成字节码(.class)文件,它是一个二进制文件。然后字节码文件就会被加载进Java虚拟机中(即:JVM中)。而JVM中又是怎样的呢?初识JVM内存区域的划分被分为了如下的几个区域:如下图:程序计数器 (PC Register): 只是一个很小的空间, 保存下一条执行的指令的地址.虚拟机栈(JVM Stack): 重点是存储局部变量表(当然也有其他信息).原创 2020-12-31 20:24:26 · 2545 阅读 · 8 评论 -
Java方法的重载
方法方法的定义方法是什么?方法的好处方法的定义方法的调用示例:两个数的最大值:三个数的最大值:方法的重载重载的总结:方法的定义方法是什么?方法对应于C语言,就相当于C语言中的函数。方法的好处方法的好处就是:1、将重复的代码抽取,方便多次重复调用2、方法专注做一件事情方法的定义方法中,最重要的几个元素:1、方法的名称2、方法的指令3、方法的形参,(没有C语言中按址传递,只有按值传递)4、方法的返回值类型。当没有返回值时,使用void表示5、修饰 public和static等。原创 2020-12-29 14:25:16 · 874 阅读 · 0 评论 -
Java中Scanner的使用和hasNextXXX()的用法
输入输出输出输入使用Scanner读取nextInt():next():nextLine():注意:使用Scanner循环读取N个数字/字符串hasNextInt()的使用输出基本语法System.out.println(msg); //输出一个字符串,自带换行System.out.print(msg); //输出一个字符串,不带换行System.out.printf(msg); //格式化输出,和C语言相同例如:public class SannerDemo { public s原创 2020-12-28 18:10:16 · 1382 阅读 · 1 评论 -
Java实现猜数字游戏,包含随机数的使用方法
目录猜数字游戏C语言Java题目分析:具体实现:代码优化具体实现:总结:猜数字游戏题目内容:用C语言实现一个猜数字游戏。进入程序,随机产生一个数字,输入数字猜这个数字的大小,直到猜中这个数字。当你输入的这个数字小于这个随机数,提示猜小了,当你输入数字大于这个随机数,则提示猜大了。直到猜中这个随机数,输出恭喜你猜中了,并结束程序。具体实现:C语言在之前通过C语言实现过猜数字游戏,详见下面链接:C语言实现猜数字游戏Java题目分析:1、首先需要产生一个随机数2、从键盘输入,如果输入数字大原创 2020-12-27 20:34:02 · 2576 阅读 · 1 评论 -
Java中数据类型中的8种基本数据类型
Java中变量和数据类型变量定义变量数据类型8种基本数据类型bytebyte的表示范围注意事项:shortshort的表示范围注意事项:intint类型表示范围如果发生溢出:longlong的表示范围如果发生溢出:float注意:float所表示的范围double注意:double表示范围:charboolean注意:变量变量中分为3中数据形态:1、局部变量2、属性 | 成员变量 | 实例变量3、静态属性 | 类变量定义变量1、定义变量/标识符:数字、字母、下划线、$、注意:不能用数字开头、原创 2020-12-26 15:18:45 · 1019 阅读 · 0 评论 -
IntelliJ IDEA 快捷键
Editing(编辑)快捷键介绍Ctrl +Space基本代码补全,输入字母按后列出匹配的词组Ctrl+Shift+Space智能代码补全,列出与预期类型一致的方法或变量Ctrl+Alt+Space补全类名Ctrl+Shift+Enter补全语句Ctrl+P显示方法参数Ctrl+Q显示注释文档Shift+F1显示外部文档Ctrl+mouse over code显示描述信息Ctrl+F1显示提示、警告、错误等信息Al转载 2020-12-25 21:34:20 · 663 阅读 · 0 评论 -
eclipse中的快捷键
序号内容快捷键注意1.补全代码alt+ /2.快速修复ctrl+13.导报ctrl+shift+o4.单行注释ctrl+/5.多行注释ctrl+shift+/6.取消多行注释ctrl+shift+\7.赋值指定行代码ctrl+alt+ down 或 ctrl+alt+up注意:这个快捷键可能和系统的快捷键冲突,可以去preferences 窗口搜索keys修改8.删除指定行代码ctrl+d...原创 2020-12-25 21:13:23 · 706 阅读 · 0 评论 -
Java通过cmd编译运行main方法示例 以及 关于JDK、JRE、JVM的简单区别
目录初识Java的main方法Java中注意事项通过cmd运行Java程序步骤:初识Java的main方法最简单的一个Java程序:Hello World!public class HelloWorld { public static void main(String[] args) { System.out.println("hello world"); }}可以说,Java的main方法,应该是所有的主流语言中最长的一个了。通过原创 2020-12-25 19:35:38 · 3300 阅读 · 2 评论