![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础
文章平均质量分 75
肖市一郎
这个作者很懒,什么都没留下…
展开
-
字符串与数组的相互转换
一:chars[]数组与字符串之间的相互转换String strStringType="my string"; //创建一个字符串变量strStringTypechar[] chrCharArray; //创建一个字符数组chrCharArraychrCharArray = strStringType.toCharArray(); //将字符串变量转换为字符数组strStringType= String.valueOf(chrCharArray ); //将字符数组转换为字符串...原创 2020-05-26 13:26:26 · 297 阅读 · 0 评论 -
递归-练习题
这里主要利用递归解决阶乘、斐波那契数列、汉诺塔、杨辉三角的存取、字符串回文判断、字符串全排列、二分查找、树的深度求解在内的八个经典问题一:阶乘问题,求解n! 思路:n!=n*(n-1)*(n-2)....*1;找到f(n)与f(n-1)之间存在的关系,由于是阶乘,故很容易得出f(n)=n*f(n-1); 找到递归结束的条件,很明显这里当n==1时f(1)=1;是递归结束的条件;public static int factorial(int n){ //当n==1...原创 2020-05-25 08:21:34 · 1236 阅读 · 0 评论 -
递归-简介
一:递归与循环的区别,举例说明 递归:你打开面前这扇门,看到屋里面还有一扇门。你走过去,发现手中的钥匙还可以打开它,你推开门,发现里面还有一扇门,你继续打开它。若干次之后,你打开面前的门后,发现只有一间屋子,没有门了。然后,你开始原路返回,每走回一间屋子,你数一次,走到入口的时候,你可以回答出你到底用这你把钥匙打开了几扇门。 递归也有点类似你在百度上面查一个词的解释,发现解释里面又有另外一个新的名词你不知道,于是又开始查这个新的名词,新的名字里面又有你不知道的新名词,...原创 2020-05-23 19:48:47 · 5017 阅读 · 0 评论 -
排序-插入排序
一、基本思想通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应的位置并插入。插入排序非常类似于整扑克牌。在开始摸牌时,左手是空的,牌面朝下放在桌上。接着,一次从桌上摸起一张牌,并将它插入到左手一把牌中的正确位置上。为了找到这张牌的正确位置,要将它与手中已有的牌从右到左地进行比较。无论什么时候,左手中的牌都是排好序的。如果输入数组已经是排好序的话,插入排序出现最佳情况,其运行时间是输入规模的一个线性函数。如果输入数组是逆序排列的,将出现最坏情况。平均情况与最坏情况一样,...转载 2020-05-21 21:48:56 · 96 阅读 · 0 评论 -
算法的时间复杂度和空间复杂度(转载)
算法的时间复杂度和空间复杂度一、算法效率的度量方法1.事后统计方法这种方法主要是通过设计好的测试程序和数据,利用计算机计时器对不同算法编制的程序的运行时间进行比较,从而确定算法效率的高低。2.事前分析估算方法在计算机程序编写前,依据统计方法对算法进行估算。经过总结,我们发现一个高级语言编写的程序在计算机上运行时所消耗的时间取决于下列因素:算法采用的策略,方案编译产生的代码质量问题的输入规模机器执行指令的速度由此可见,抛开这些与计算机硬件、软件有关的因素,一个程序的运行时间依赖于算转载 2020-05-21 14:43:02 · 911 阅读 · 0 评论 -
(转载)java快速排序原理
高快省的排序算法有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用来参照的数,待会你就知道它用来做啥的了)。为了方便,就让第一个数6作为基准数吧。接下来,需要将这个序列中所有比基准数大的数放在6的右边,比基准数小的数...转载 2020-05-21 11:25:30 · 174 阅读 · 0 评论 -
排序-快速排序
一:原理 以一个数为基准,我们叫它base数,将数组中的元素以base为参考,大于base的放在base的右边,小于base的放在base的左边,这样就可以找到base在数组中正确的位置。二:代码分析 public static void fastSelcet(int[] arry,int low,int high){ //由于low和high会参与后面的计算,值会发生变化,而我们后面递归的时候需要用到初始的low和high值,故这里先赋值记下...原创 2020-05-21 11:22:48 · 81 阅读 · 0 评论 -
位运算符
(&和|运算时候1当成true,0当做false)一:&//与运算 & 规则 :都为1时才为1 System.out.println( 7 & 9); &...转载 2020-05-20 14:27:28 · 156 阅读 · 0 评论 -
原码,反码和补码
本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 一. 机器数和真值在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念.1、机器数一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1.比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011。如果是 -3...转载 2020-05-20 13:48:54 · 100 阅读 · 0 评论 -
基本数据类型-Integer.parseInt(String s)
一:如何不用Integer.parseInt(string)方法将字符串"-123"变成int整型123; 我们来看下Integer.parseInt的源码 public static int parseInt(String var0) throws NumberFormatException { return parseInt(var0, 10); }public static int parseInt(String var0, int v...原创 2020-05-20 00:05:27 · 1525 阅读 · 0 评论 -
Java中子类对父类私有方法覆盖的问题
最近在学习到Java的继承和多态时遇到了这样的一个问题:关于继承链中子类对父类的私有方法是否可以覆盖的问题,在此记录一下自己对这个问题解决以后的一些心得。首先要明确:子类是不能够覆盖(重写)父类的私有方法的。比较直观的理由是,子类要能够重写父类的方法的前提条件是继承,子类对父类的私有方法并不继承,也没有访问权限,自然也是不能重写的。接下来看一个例子:public class Test { public static void main(String[] args) { new A().printP.转载 2020-05-18 11:10:47 · 1349 阅读 · 0 评论 -
java基本数据类型
Java 基本数据类型 及 == 与 equals 方法的区别 </h1> <div class="clear"></div> <div class="postBody"> Java数据类型分为基本数据类型与引用数据类型。 1 基本数据类型byte:Java中最小的数据类型,在内存中占1个字节(8 bit),取值范围-128~127,默认值0short:短整型,2个字节转载 2020-05-18 10:47:25 · 119 阅读 · 0 评论 -
equals与==的区别
一、对象类型不同1、equals():是超类Object中的方法。2、==:是操作符。二、比较的对象不同1、equals():equals是Object中的方法,在Object中equals方法实际"ruturn (this==obj)",用到的还是"==",说明如果对象不重写equals方法,实际该对象的equals和"=="作用是一样的,都是比较的地址值(因为"=="比较的就是地址值),但是大部分类都会重写父类的equals方法,用来检测两个对象是否相等,即两个对象的内容是否相等,例如S原创 2020-05-18 10:41:18 · 24456 阅读 · 4 评论 -
集合-TreeSet
一:简介 TreeSet是Set集合的子类,可以对集合中的元素进行排序,如果如果在TreeSet中存入字符串,那么输出时,字符串元素是安排自然顺序进行排序的。 TreeSet可以对元素进行排序,故要么存入的元素具备比较性(如String,那是因为String实现了Comparable接口),要么在创建TreeSet时给它一个比较器二:需求 在TreeSet中存入Student对象,希望安排年龄进行排序,那么Student对象必须要实现Compara...原创 2020-05-18 09:44:17 · 261 阅读 · 0 评论 -
集合-HastSet
一:简介 HashSet是Set集合的子类,可以实例化,不能存相同的元素,底层是哈希表结构 HashSet中的元素是无序的(存入和取出顺序不同),原因是HastSet中的元素是按照哈希值来存储的,每一个元素都有一个哈希值(底层算法算的哈希值,元素调用hashcode即可获取到哈希值),按照哈希值的大小来排序,故存入和取出的顺序是不同的,当两个元素的哈希值相同时,HashSet再去判断两个元素是否是同一个元素,这里调用的是元素的equals方法,如果相同则存不进去,如果不同则在此元素的...原创 2020-05-18 00:42:18 · 183 阅读 · 0 评论 -
集合-ArrayList练习
一:去掉ArrayList中重复的元素 public static ArrayList singalElement(ArrayList list){ //首先创建一个临时容器 ArrayList<String> tempList = new ArrayList<String>(); Iterator<String> iterator = list.iterator(); while(iterato原创 2020-05-17 23:47:54 · 167 阅读 · 0 评论 -
IO流-FileWirter的使用
看如下代码package com.thundersoft.myjava;import java.io.File;import java.io.FileWriter;import java.io.IOException;public class MyClass { public static void main(String[] args) { FileWriter fw = null; FileWriter ff = null; ch原创 2020-05-17 17:06:00 · 147 阅读 · 0 评论 -
IO流-简介
一:概念IO流:input和output的简称,用来处理设备之间数据的传输。java对数据的操作是通过流的方式Java用于操作流的对象都在IO包中流按照操作数据分为两种:字符流和字节流流按流向分为:输入流和输出流二:字符流的由来ascii 由于计算机只能识别二进制数据 ,故早期的流都是二进制的,像媒体文件等所有的文件都是可以通过字节流来处理的,后来人们将文本类的文件单独分离出来,这些文本文件经常使用,就弄了个字符流,以美国为例,将abcd等26个字母和一些其他...原创 2020-05-16 23:49:05 · 131 阅读 · 0 评论 -
字符串String是一个特殊的对象
1:字符串是一个特殊的对象java中所有字符串文字都被视为String类的一个实例对象,例如"abc"就代表一个实例对象,当我们定义一个字符串String s="abc"时,其实是单独开辟了一个空间,叫做字符串常量池,将此字符串对象存在了常量池。2:字符串一旦被初始化就不可以被改变String str = "abc"; 对于这么一个实例对象,str是类类型变量,是一个指针,而“abc”作为一个对象已经在内存中开辟了空间,叫做常量池,如果此时str ="gkl";那么"gkl"作为一个对象实例,内.原创 2020-05-15 10:12:55 · 758 阅读 · 0 评论 -
java基础知识点
发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~本套Java面试题大全,全的不能再全,哈哈~一、Java 基础1. JDK 和 JRE 有什么区别?JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。 JRE:Java Runtime Environment 的简称,java 运...转载 2020-05-08 17:33:28 · 207 阅读 · 0 评论 -
面向对象之继承
java虽然不支持多继承,但是支持多实现(interface)和多层继承(A继承B,B继承C)子类方法覆盖父类方法必须保证子类方法权限大于等于父类方法权限子父构造函数1:是否能继承子类不能继承父类的构造函数,不存在这个概念2:是否能覆盖父类的构造函数不存在覆盖,覆盖要求函数名和返回值一致,只存在参数的不同,而子父的构造函数名都不一样,所以不存在覆...原创 2020-05-08 16:29:49 · 95 阅读 · 0 评论 -
java关键字
this关键字this代表它所在函数所属对象的引用;哪个对象在调用this所在的函数,this就代表哪个函数;作用:解决成员变量和局部变量同名的问题; 当定义类中功能时,该函数内部需要调用该函数的对象时,这时可以用this来表示这个对象构造函数之间相互调用需要使用this,且必须放在构造函数的第一行;必须放在第一行的原因:先执行其它初始化,再执行自身初始化...原创 2020-05-07 17:57:03 · 83 阅读 · 0 评论 -
面向对象之多态
1:多态的体现父类引用指向子类对象父类引用可以接收子类对象2:多态的前提类与类之间必须有关系,要么继承要么实现通常还有一个前提:存在覆盖3:多态的好处多态大大提高了程序的扩展性4:多态的弊端提供了扩展性,但是只能使用父类的引用访问父类中的成员5:强制将父类引用转换为子类对象,称为向下转型父类引用接收子类对象,称为向上转型多态至始至终都是子类对象...原创 2020-05-06 11:25:51 · 69 阅读 · 0 评论 -
接口简介
接口简单介绍 :可以理解为一个特殊的抽象类,即是一个所有方法都是抽象的抽象类, 成员变量固定修饰符: public static final 方法的固定修饰符: public abstract 在接口中 public static final abstract修饰符可以省略,系统会自动加上。一般不推荐省略 接口...原创 2020-05-06 11:02:31 · 86 阅读 · 0 评论 -
抽象类简介
一:抽象类特点抽象方法一定在抽象类中 抽象方法和抽象类都必须被abstract关键字修饰 抽象类不能创建对象,因为调用抽象方法是没有意义的 抽象类中的抽象方法要被使用,必须有子类继承它并复写所有抽象方法后才能调用,若只覆盖部分抽象方法,则子类还是抽象类注意:抽象类中可以不一定有抽象方法,这样做的作用仅仅是不让该类拥有实例对象。 抽象类的子类不必实现它的所有抽象方...原创 2020-05-06 10:56:02 · 106 阅读 · 0 评论 -
二维数组
定义:数组里面的套数组,外数组的每一个元素都是一个数组(数组地址)一:动态初始化int[][] arry = new int[3][4];//定义了一个含有三个元素的数组,这三个元素又分别是3个包含4个元素的数组。二:静态初始化int[][] arry= {{2,3,5,6},{4,6,2},{4,7}};或int[][] arry = new int[3][]...原创 2020-05-06 10:46:40 · 711 阅读 · 0 评论 -
静态代码块和构造代码块
构造代码块作用:给对象进行初始化,对象一建立就运行且在构造函数之前运行;与构造函数的区别:构造代码块在构造函数前执行,构造代码块是给所有对象初始化(对象共性),构造函数只给对应的对象初始化。静态代码块:随着类的加载而加载,给类进行初始化执行顺序 :静态代码块(类初始化) >构造代码块 (对象初始化)>构造方法 (对应对象初始化)简称:静块...原创 2020-05-06 10:39:42 · 154 阅读 · 0 评论 -
面向对象之封装
一:类和对象的区别类:对实现生活中事物的描述,映射到java中,就是class定义的类对象:就是这类事物,实实在在的个体;java中具体对象就是堆内存中new建立的实体,对象一般都是用来存储数据的(存储数据的实体在堆内存中)堆内存中的变量一般都有默认初始化值,int对应的是0,String对应的是null,如果类中的变量已经有值,这个值称为显示初始化值。事物的属性对应的是类中...原创 2020-05-06 10:37:26 · 111 阅读 · 0 评论 -
懒汉式与饿汉式
设计模式:解决某类问题最有效的方法java中一共有23种设计模式单例模式:解决某些类只在内存中有一个内存地址,即只有一个实例对象。1:私有化构造方法2:new一个对象,并提供获取对象的方法开发中建议使用饿汉式,优势:代码简洁,安全(懒汉式多线程情况下若没有上锁,容易出错)如何解决懒汉式多线程出错问题解决办法一:给方法上锁...原创 2020-05-06 10:17:57 · 88 阅读 · 0 评论 -
制作java的api
制作java的api(Application process interface)1:制作api的类必须用pulbic修饰,被public修饰的类其类名和文件名要保持一致。2:默认的构造函数的权限和类的权限是一样的。3:注释举例4:制作api文档的命令javadoc -d DocumentLocation -author -version ...原创 2020-05-06 10:13:47 · 579 阅读 · 0 评论 -
数组练习
数组的常规操作:题目:将数组各元素进行排序【2,5,3,6,7】一:选择排序从数组第一个元素开始逐一和后面的元素比较,如果后面的元素小于第一元素,就将二者的值对换,一轮下来最小的值就是数组的第一个元素,依次类推,直到比完为止 public static void SelectSort(int[] arry){ int temp; for(int ...原创 2020-05-06 10:07:51 · 113 阅读 · 0 评论 -
一维数组
两种初始化方式动态赋值:只给出数组的长度,系统自动给数组赋值,如int类型的数组,系统自动给每个元素分配0int[] arry = new int[3];静态赋值:给数组每个元素赋值,系统自动分配长度;int[] arry = new int[]{ 2,3,4};也可以写成: int[] arry = {2,3,4};备注:int arry[] = new int[];这样...原创 2020-05-06 09:56:09 · 92 阅读 · 0 评论 -
字符串String练习
1:字符串反转class StringDemo { public static void main(String[] args) { String s = " as ds db "; String m = reverseString(s,5,9); sop(m); } public static ...原创 2020-05-04 14:59:43 · 192 阅读 · 0 评论 -
StringBuffer和StringBuilder
简介:StringBuffer是一个字符串的缓冲区,可以理解为一个字符串的容器,且长度是可变化的,一个容器可以同时操作多个数据类型,拥有add,remove,update等功能 最终可以通过toString()变为字符串与StringBuilder的区别1:StringBuffer线程安全,效率低2:StringBuilder线程不安全,效率高,开发建议使用...原创 2020-05-04 14:55:10 · 69 阅读 · 0 评论 -
基本数据类型对象的包装类,自动拆箱。
一:基本数据类型对应的包装类byte Byte short short int Integer long Long boolean Boolean float Float double Double char Character二:基本数据类型包装类最常用的功能用于与字符串之间的转换int转字符串如:Integer.toString(34)字符串转in...原创 2020-05-04 14:38:18 · 141 阅读 · 0 评论 -
数组与集合之间的关联
一:将数组转化为集合public class CollectionsDemo { public static void main(String[] args) { String[] s = { "a", "b", "c" }; List<String> listString = Arrays.asList(s);...原创 2020-05-04 14:26:14 · 231 阅读 · 0 评论 -
静态导入
一:静态导入举例import static java.util.Arrays.*导入的是Arrays类中所有的静态成员;原创 2020-04-30 18:06:35 · 76 阅读 · 0 评论 -
泛型简介
一:为什么要出现泛型 泛型是JDK1.5后出现的新特性,用于解决安全问题,是一个安全机制。二:泛型出现的好处将运行时出现的ClassCastException异常,转移到了编译时期,方便程序员解决问题,减少运行时期的异常,安全。 避免了强制转换的异常三:没有泛型时的写法class tools{ private Object obj; pu...原创 2020-04-30 18:01:52 · 120 阅读 · 0 评论 -
Map集合简介
一:特点 1.集合中是键值对的关系,且key是唯一的,不能重复,value可以重复二:常见子类1.Hashtable 特点 : 底层是哈希表结构,不能存入null键null值,线程安全,jdk1.0效率低,用于键的对象必须实现hashcode和equals方法2.HashMap 特点:底层是哈希表结构,允许使用null键null值,线...原创 2020-04-30 17:16:28 · 113 阅读 · 0 评论 -
Set集合简介
一:特点1:set集合无序(存入和取出顺序不同),元素不可重复,底层是哈希表结构二:比较的原理1:比较元素的哈希值是否相同(hashCode),如果相同这比较二者是否为同一个元素(equlas方法),如果是同一个元素则不存入,否则存入。三:常见子类 1.HashSet:底层数据结构是哈希表 Ha...原创 2020-04-30 17:06:15 · 591 阅读 · 0 评论