JavaSE
JavaSE初阶知识点
x.yao
既然选择了远方,便只顾风雨兼程.
展开
-
小型电话薄管理系统(Mysql数据库)
学习完Java的基础内容与Mysql相关内容,用一个小型的电话薄管理系统来检验巩固一下所学的知识。 首先分析一下电话薄管理系统,电话薄内存储了用户的姓名,电话号码,地址等信息,向数据库中写入或者操作这些数据就要先在数据库中建立一个自己要用的库和建相应的表来存储信息,建完数据库和表后就可以通过Java程序连接数据库进而来完成对数据库的相关操作(增删改查) 我将小型的电话薄管理系...原创 2020-02-12 19:45:11 · 1206 阅读 · 0 评论 -
使用断言
断言 1.断言的概念 若确信某个属性符合要求,并且代码的执行依赖于这个属性。比如:需要计算 double y=Math.sqrt(x); 上述可以确信的是x是一个非负数值。但是还是希望进行检查,以避免让“不是一个数”的数值参与计算操作。在这里可以抛出异常来处理这个问题,但是异常处理的代码在测试完毕之后不会自动删除,如果代码中含有大量的这种检查,程序运行起来也会很慢。 断言机制就是...原创 2020-02-10 18:11:23 · 1130 阅读 · 0 评论 -
复杂链表的复制(深拷贝)
题目描述: 给定一个链表,每个结点包含一个额外增加的随机指针,该指针可以指向链表中任何结点或者空结点,要求返回这个链表的深拷贝。 思路分析: 1.破坏需要复制的复杂链表,将新老节点串成一个单链表的形式 2.解决random的指向问题(重要代码:cur.next.random=cur.random.next) 3.完成上述结点处理已经完成,最后一步就是将链表拆分开来...原创 2020-02-07 22:45:59 · 746 阅读 · 1 评论 -
Java基础知识点梳理1
1.面向对象的特征都有哪些?①抽象 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分的注意与当前目标有关的方面。抽象并不打算了解全部过程,而是只选择其中一部分,暂时不用部分细节。②封装 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算机始于这个基本概念,即现实世界可以被描述成一系列完全自治,封装的对象,这些对象通过一个受保护的接口访问其他对象...原创 2019-12-29 11:27:12 · 103 阅读 · 0 评论 -
字符串的常见操作
一.字符串的比较 1.区分大小写的比较public boolean equals(Object anObject)代码示例:public class Test { public static void main(String[] args) { String a = "abcde"; String b = "aBcde"; ...原创 2019-12-04 16:49:03 · 557 阅读 · 0 评论 -
Java中的异常详解(概念,用法)
一.什么是异常? 代码程序在运行时有可能会发生各种非正常的状况,如程序运行时磁盘空间不足,网络连接中断,被加载的类不存在等,针对这些非正常的情况,Java语言中引入了异常,并且以异常类的形式对这些非正常情况进行封装,通过异常处理机制对程序运行时发生的各种问题进行处理。 二.异常体系 异常类都来自于Throwable类 下图表示Java内置的异常类之间的继承关系...原创 2019-12-03 23:08:10 · 224 阅读 · 0 评论 -
字符,字节与字符串的一些常见操作
一.字符与字符串 字符串内部包含一个字符数组,String可以和char[]相互转换 1.将字符数组中的所有内容变为字符串public String(char value[])2.将部分字符数组中的内容变为字符串public String(char value[],int offset,int count) //offset代表偏移量,count代表个数 参...原创 2019-12-02 22:23:56 · 311 阅读 · 0 评论 -
Java中的多态
多态 一.向上转型(子类引用给父类) 在类的继承中我们写了这样的一个代码Bird bird=new Bird("小小");上述代码也可以写成Bird bird=new Bird("小小"); Animal bird2=bird;或者写成 Animal bird2=new bird("小小"); 此时bird2是一个父类的引用,指向一个子类(Bird)的实例,这种写法称为...原创 2019-11-24 14:39:17 · 89 阅读 · 0 评论 -
抽象类和接口的区别
一.抽象类 观察代码:class Shape{ public void draw(){ //啥都不干 }}class Cycle extends Shape{ @Override public void draw() { System.out.println("⚪"); }}class Rect ex...原创 2019-11-20 20:54:35 · 273 阅读 · 0 评论 -
Java中重写和重载的区别
一.重写 子类实现父类的同名方法,并且参数的类型和个数完全相同,这种情况称为覆写/重写/覆盖重写的规则:①返回类型相同②方法名相同③参数相同 重写要注意的事项:①普通方法可以重写,static修饰的静态方法不能重写②重写中子类的方法的访问权限不能低于父类的方法访问权限参考代码://Animal父类class Animal{ public String na...原创 2019-11-19 21:11:24 · 366 阅读 · 0 评论 -
双指针法解决数组删除重复元素的问题
问题描述: 给定一个排序数组,要求在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。且不要使用额外的数组空间。 算法思路: ①定义fast为1,slow为0,这里的fast和slow代表的是数组的下标 ②若fast和slow内容相等,让fast向后走一步,再判断,如果一直相等,fast就一直向后走,直到slow和fast的内容不相等,当两个内容不相等时,...原创 2019-11-17 20:08:25 · 1069 阅读 · 0 评论 -
Java中final关键字的使用
一.用final修饰一个类 当一个类用final关键字来修饰的时候,此时这个类变为常量类那么常量类有什么特征呢?1.常量类不能被继承举个例子://用final修饰一个Myclass类final class Myclass{ //.....}//定义一个student类继承Myclassclass student extends Myclass{ //....原创 2019-11-15 21:32:00 · 135 阅读 · 0 评论 -
Java中的继承
继承(is -a的关系) 一.背景 代码中创建的类主要是为了抽象现实中的一些事物。有时候客观的事物之间就会存在一定的关联关系,那么在表示成类和对象的时候也会存在一定的关联。 观察下列代码://定义动物类class Animal{ public String name; public Animal(String name){ this....原创 2019-11-14 20:15:38 · 290 阅读 · 0 评论 -
Java------判断单链表的回文结构
回文结构:如1-2-2-1;1-2-3-2-1;类似于这样的就是回文结构,可以发现链表正向和反向的内容顺序是一样的。 算法思路: ①可以先找到链表的中间节点,将后半部分进行反转 ②对反转后的链表进行前后部分数据域的比较,如果数据域相同,head=head.next;slow=slow.next,如果比较完之后两个指针相遇,则代表链表是回文结构(在这里要注意链表节点数是偶数个的情...原创 2019-11-12 20:08:32 · 296 阅读 · 0 评论 -
关于链表的清空(防止内存泄漏)
构建链表之后为什么要将链表清空? 链表是用指针把一个个存储的空间连接起来了,用完之后不清空,很容易发生内存泄漏(内存泄漏:向系统申请分配内存进行使用(new),可是使用完了以后却不delete,而自己出于某些原因不能再访问到那块内存(也许把它的地址给弄丢了),这时候系统也不能再次将它分配给需要的程序。)JVM内存回收 jvm内存结构分为五大区域:程序计数器、虚拟机栈、本地方法...原创 2019-11-11 20:30:30 · 3824 阅读 · 0 评论 -
双向链表相关代码(建立,插入,获取长度,打印)
双向链表 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。双向链表节点图示:双向链表示意图: 要注意的是,在对双向链表进行操作时,如插入,删除,和单链表是有区别的,双向链表需要同时修改两个方向上的指针(prev和next)插入时指针的变化:参考代码...原创 2019-11-11 16:43:56 · 449 阅读 · 0 评论 -
Java-------相交链表
问题描述:找到两个单链表相交的起始节点如图所示:下图中即表示两个节点相交,两个链表在节点6处相交参考代码:class ListNode{ public int data; public ListNode next; public ListNode(int data){ this.data=data; this.next=null;...原创 2019-11-10 20:51:14 · 254 阅读 · 0 评论 -
Java-------反转单链表
问题描述: 给定一个单链表,将单链表进行反转。(即原单链表的头变为尾,尾变为头) 算法思路: ①可以定义cur用来遍历链表,pre指向cur的前驱节点,curnext指向cur的后继节点,newhead代表链表新的头。 ②当cur不为空时遍历,可以发现反转链表cur的next域就是原单链表的前驱节点地址,就是pre。所以将pre赋值给cur的指针域,pre等于cur,最后c...原创 2019-11-08 17:01:11 · 98 阅读 · 0 评论 -
Java-------删除单链表中重复的节点(前提是有序)
问题描述:在单链表有序的前提下,将单链表中重复出现的节点都删除 算法思路: ①定义cur用来遍历单链表的每个节点,定义一个虚拟节点node,定义一个tmp用来连接之后的节点 ②当cur不为空时进入循环,如果cur的下一个节点不为空,比较当前节点和下一个结点的数据域是否相等,如果相等cur走一步(因为遇到相等的数据,cur走一步相当于抛弃当前节点),之后再进行下一次的比较;如果...原创 2019-11-07 18:35:35 · 222 阅读 · 0 评论 -
Java---------判断一个单链表是否有环及找环的入口
什么是环? 单链表有环,是指单链表中某个节点的next指针域指向的是链表中在它之前的某一个节点,这样在链表的尾部形成一个环形结构。 如上图,最后一个节点指向了第三个节点,所以后面四个节点构成了一个环,怎么判断单链表是否有环呢? 一.快慢指针法判断有无环: 1.算法思路:可以定义快慢指针(fast和slow),让fast每次步径是slow的两倍,因为fast是两步两步...原创 2019-11-05 20:58:35 · 769 阅读 · 0 评论 -
Java--------对单链表进行排序(比x大的放在右边,比x小的放在左边,顺序不变)
问题描述:对一个单链表进行操作排序(比x大的放在右边,比x小的放在左边,顺序不变)参考代码:import java.util.List;//节点定义class ListNode{ public int data; public ListNode next; public ListNode(int data){ this.data=data; ...原创 2019-11-04 22:55:39 · 650 阅读 · 0 评论 -
Java-------合并两个有序链表
问题描述: 给定两个链表(前提是链表有序),将两个链表中的值由小到大进行合并 算法思路: ①首先给定两个单链表(有序),我们将第一个单链表的头用headA表示,第二个单链表的头用headB表示,其次还要定义一个虚拟节点node来表示新链表的头(数据域可给为-1),定义一个tmp来进行移动(tmp刚开始和node相等)。之后将一个一个经过比较的值往tmp后依此串就可以,再打印新连...原创 2019-11-02 23:30:05 · 473 阅读 · 2 评论 -
Java实现单链表的相关操作
Java具有封装的特性,所以我们可以根据这个特性将单链表分为3个类进行书写 ①第一个类就是节点类,定义了节点的数据域和next域,并且有一个带参构造来初始化节点 ②第二个就是定义一个链表类(下述为不带头结点的链表,单链表相关知识可以查看单链表:),链表类里有一个head属性,用来表示当前链表的头,初始化为空,不带头结点的链表当采用头插法时头是会变的哦 ③最后书写一个测试类来...原创 2019-10-29 21:00:57 · 117 阅读 · 0 评论 -
顺序表相关操作(增,删,改,查等)
我们用Java代码来实现顺序表 线性表的概念: 线性表是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表,链表,栈,队列,字符串。 线性表的顺序存储结构是指在计算机中用一组地址连续的存储单元依次存储线性表的各个元素,元素之间的逻辑关系通过存储位置来反映,用这种存储形式存储的线性表称为顺序表。 顺序表:一般情况下采用数组存储。...原创 2019-10-28 22:51:09 · 440 阅读 · 0 评论 -
Java中的static关键字的作用及使用
static的作用1.修饰属性2.修饰方法3.修饰代码块4.修饰类(本文不作讲解) 一.修饰属性 在定义一个类时,只是在描述某类事物的特征和行为,并没有产生具体的数据。只有通过new关键字创建该类的实例化对象后,系统才会为每个对象分配内存空间,存储各自的数据。 有时候,开发人员会希望某些特定的数据在内存中只有一份,而且能够被一个类的所有实例化对象所共享。这时候就可以用s...原创 2019-10-27 23:25:03 · 237 阅读 · 0 评论 -
任意输出五个数,判断里边有无重复的数
其实用两层for循环就可以解决这个问题 算法思路:首先要随机输出5个数用 Random random = new Random()来实现随机输出,那么我们可以定义一个长度为5的数组来接收这随机产生的数,即现在有了一个存有5个元素的数组arr,接下来就比较这5个数中有没有重复的元素 比较的时候我们首先拿出arr[0]来分别和剩下的四个进行比较,如果有相同的即数组中有重复的元素,则用r...原创 2019-10-26 14:42:02 · 571 阅读 · 0 评论 -
关于数组拷贝,求数组平均值,找数组中的最大元素,数组的二分查找,数组逆置等数组的练习
数组的一些练习代码 1.数组转字符串参考代码:import java.util.Arrays; //导入包public class Test { public static void main(String[] args) { int[] array1={1,2,3,4,5}; String arr= Arrays....原创 2019-10-21 23:38:29 · 110 阅读 · 0 评论 -
Java中的数组
Java中数组相关知识总结有些地方和c中还是有区别的 一.数组基本用法1.什么是数组 在Java中,数组也就是相同类型元素的集合,它可以让我们“批量”创建相同类型的变量。数组的内存是连续的。 2.创建数组 基本语法:int[] array1={1,2,3,4,5};int[] array2=new int[]{1,2,3,4,5};int[] array3=new int[5...原创 2019-10-20 23:34:22 · 173 阅读 · 0 评论 -
Java中的方法
Java中的方法 一.方法的基本用法1.什么是方法 方法就是一个代码片段,类似于c语言中的“函数”方法存在有什么用呢? ①能够模块化的组织代码(当代码规模比较复杂的时候) ②做到代码能够被重复使用,一份代码可以在多个位置使用 ③让代码更好理解,更简单 ④直接调用现有方法开发,不必重复造轮子 2.方法怎么定义//方法定义public static 方法返回值...原创 2019-10-19 18:36:52 · 295 阅读 · 0 评论 -
青蛙跳台问题
问题描述: 一只青蛙可以跳上一级台阶,也可以跳上两级台阶。求该青蛙跳上一个n级台阶总共有多少种跳法。 示意图: 通过画图分析前几个,我们可以得出来一些规律 1.如果有1个台阶只有1种跳法 2.如果有两个台阶,青蛙第一次可以选择跳一个,也可以选择跳两个。假如选择跳一个,之后只有一次选择跳完剩下的一个台阶这是一种跳法。假如选择跳两个是另外一种跳法,所以两个台阶有两种...原创 2019-10-17 22:53:47 · 1042 阅读 · 0 评论 -
模拟3次密码输入
题目要求: 最多能输入三次密码,密码正确,提示登录成功,密码错误,可以重新输入,最多输入三次,三次都错,则退出程序。 1.首先自己设置一个密码,用字符串类型接收这个密码 2.题目要求最多输入3次,我们就可以用循环来控制输入密码的次数,只要两个密码一致就break掉,不一致就count++,count加到3循环结束。 3.这里要用到Java中两个重点内容 ①从键盘输入用Scanner...原创 2019-10-14 20:18:14 · 296 阅读 · 0 评论 -
Java 猜数字游戏
完成猜数字游戏 1.首先猜数字游戏,第一个想到的就是必须先产生一个数来让我们猜,当然这个数可以自定义也可以由系统随机生成 2.Java中产生随机数可以用如下语句:可以产生0-100的随机数 java.util.Random random =new java.util.Random(); int a=random.nextInt(100); 3.产生随机数之后,就要我们来...原创 2019-10-11 21:54:44 · 555 阅读 · 1 评论 -
数据类型
Java数据类型 这里包含了许多种不同的数据类型,不同数据类型所占的空间字节大小也是不一样的,数据类型匹配也是很重要的!字节 计算机中使用二进制表示数据。8个二进制位(bit)为一个字节(Byte)1KB=1024Byte,1MB=1024KB,1GB=1024MB 首先Java中的数据类型分为内置类型(简单类型)和引用类型 1.内置类型①数值型(整型:byte,short,...原创 2019-09-28 21:17:24 · 96 阅读 · 0 评论 -
Java中的类和对象
类的声明和定义 定义:将具有相同属性及相同行为的一组对象称为类,类是一个独立的单元 类有一个类名,类中包含①成员变量(用于描述对象的属性)②类的成员方法(用于描述类的行为) 类是一个抽象的概念。一个类可以创建多个类对象,他们具有相同的属性模式,可以具备不同的属性值。例如:每个同学都有自己的学号,姓名,年龄,性别等。把这些共同的属性抽象成一个“学生”类。每个具体的某某同学就是...原创 2019-09-27 23:27:54 · 196 阅读 · 0 评论