
Java基础
文章平均质量分 82
Java基础博文
山禾说
胸中有沟壑,眼里存山河
展开
-
Java 基础(六):循环
循环老生常谈的一个控制流程了,我们在是使用数组和集合的时候,遍历元素的时候经常会用到循环的结构,Java具有非常灵活的三种循环机制:根据是否知道循环的次数可以为分为while循环,do…while循环和for循环,下面我们单独来了解一下:while循环当我们不知道循环的具体次数时,可以使用while循环进行操作,下面是while循环的伪代码定义初始变量 while (控制条件) {...原创 2020-03-20 08:24:42 · 343 阅读 · 0 评论 -
Java基础(五):数组
数组,一种应用非常广泛的数据结构,简单地来说就是一组类型相同且无序的元素的存储在固定长度且有序的内存空间。创建一个数组在Java中,我们可以通过[]去声明一个指定类型的数组int[] a; // 写法一int a[]; // 写法二当然,一般情况下我们更喜欢使用第一种方式来声明一个数组,因为它将类型与变量名分开,优化了代码的可读性。刚刚我们只是声明了一个数组 a ,但是并没有将 ...原创 2020-03-19 08:38:42 · 310 阅读 · 0 评论 -
Java 基础(四):从面试题看String
数组,一种应用非常广泛的数据结构,简单地来说就是一组类型相同且无序的元素的存储在固定长度且有序的内存空间。创建一个数组在Java中,我们可以通过[]去声明一个指定类型的数组int[] a; // 写法一int a[]; // 写法二当然,一般情况下我们更喜欢使用第一种方式来声明一个数组,因为它将类型与变量名分开,优化了代码的可读性。刚刚我们只是声明了一个数组 a ,但是并没有将 ...原创 2020-03-18 06:50:45 · 237 阅读 · 0 评论 -
Java Grammar(三):修饰符
简介修饰符是用于限定类型以及类型成员申明的一种符号,从修饰对象上可以分为类修饰符,方法修饰符,变量修饰符;从功能上可以划分为访问控制修饰符和非访问修饰符。访问修饰符控制访问权限,不同的访问修饰符有不同的权限范围,而非访问修饰符则是提供一些特有功能。下面我们从功能的角度分别讲解修饰符访问修饰符访问修饰符有四种:public,private,protected,default。这里需要注意,...原创 2020-03-17 08:32:23 · 328 阅读 · 0 评论 -
Java Grammar(二):运算符
运算符简介计算机自打诞生以来,用作最多的就是进行计算,而计算离不开运算符,所以运算符在我们的Java语言中的地位举足轻重,我们现在就来了解一下Java给我们提供的运算符。从运算的元素的个数来区分,可以分为一元运算符,二元运算符,三元运算符。其中一元运算符包括:+(正数)-(负数)++(自增1)—(自减1)~(按位取反)!(逻辑取反)其实自增和自减也可以看成是特殊的二元运算...原创 2020-03-16 08:22:50 · 632 阅读 · 0 评论 -
Java 基础专题(一):基础数据类型
前言今天我们来聊一下Java这门语言的数据类型,众所周知,Java是一种强类型语言。在Java中,一共有8种基本类型,其中4种整形,2种浮点类型,1种用于表示Unicode编码的字符单元的字符类型char和1种用于表示真值的boolean类型。整型整形用于表示没有小数部分的数值,允许为负。 类型 存储大小 取值范围 int 4字节 -2,147,4...原创 2018-05-29 23:52:58 · 354 阅读 · 0 评论 -
Java基础专题(二):运算符
前言计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。我们可以把运算符分成以下几组:算术运算符 关系运算符 位运算符 逻辑运算符 赋值运算符 其他运算符 算术运算符算术运算符的运算结果为整型值或者浮点值算术运算符如下表所示:设 a = 1 , b = 2 运算符 描述 例子 +...原创 2018-06-03 18:20:17 · 306 阅读 · 0 评论 -
Java基础专题(三):字符串
前言从概念上来讲,Java字符串就是Unicode字符序列。例如,”Java\u2122” 由5个Unicode字符J,a,v,a,和 ™。Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义类,叫做String。每个用双引号括起来的字符串都是String类的一个实例。子串String类的substring方法可以从一个较大的字符串提取出一个子串。例如:S...原创 2018-06-18 15:45:11 · 889 阅读 · 0 评论 -
Java基础专题(四):控制流程
前言和其他程序设计语言一样,Java使用条件语句和循环结构确定控制流程,在介绍这些条件语句和循环结构之前,我们先来了解一下块作用域这个概念。块作用域块(block,即复合语句)是指由一对大括号括起来的若干条简单的Java语句,块确定了变量的作用域。一个块可以嵌套在另一个块中。下面是在main方法块中嵌套另一个语句块的实例: public static void mai...原创 2018-06-27 22:46:37 · 243 阅读 · 0 评论 -
Java基础专题(五):数组
简介在Java中,有一种数据结构叫做数组,它用来存储同一类型的值的集合。通过一个整型下标可以访问数组中的每一个值。例如,如果a是一个整型数组,那么a[i]就是数组中下标为i的整数。创建一个数组的方法首先,我们可以声明一个数组,声明一个数组有两种方法:int[] a;int a[];当然,一般情况下我们更喜欢使用第一种方式来声明一个数组,因为它将类型与变量名分开,优化了...原创 2018-07-04 19:42:57 · 317 阅读 · 0 评论 -
Java基础专题(六):对象与类(上)
概述类(class)是构造对象的模板。由类构造对象的过程称为创建类的实例。封装从形式上看,封装是将数据和行为组合在一个包中,并对对象的使用者隐藏了数据的实现方式。对象中的数据称为实例域,而操纵数据的过程称之为方法。对于每个特定的类实例(对象)都有一组特定的实例域值。这些值的集合就是这个对象的当前状态。而实现封装的关键就是绝对不能让类中的方法直接访问其他类的实例域,仅仅可以通过对象的方法来与...原创 2018-07-04 21:59:56 · 386 阅读 · 0 评论 -
Java基础专题(七):对象与类(下)
前言上节我们学习了对象和对象变量的概念,以及它们之间的区别。与此同时,我们还知道了如何自定义一个属于我们自己的类,以及多个源文件的时候的编译机制。这节课我们来剖析一下我们上节课建造的这个类。解读类Employee类如下:public class Employee { //fields private String name; private dou...原创 2018-07-06 21:39:21 · 232 阅读 · 0 评论 -
Java基础系列(八):static关键字
静态域如果把域标记为static,每个类中只有一个这样的域,而这个类的每一个对象都有自己的一份拷贝。例如,如果需要给每一个用户赋予一个唯一的标识,我们可以这么做:class User { private static int nextId = 1; private int id;}现在,每一个用户对象都有一个自己的id域,但这个类的所有实例将共享一个nextId域...原创 2018-07-09 20:54:35 · 272 阅读 · 0 评论 -
Java基础系列(九):方法参数
前言首先,我们要认识到一点Java中方法参数的传递都是按值调用的,方法得到的是所有参数值的一个拷贝,它并不能修改传递给它的参数变量的值。下面我们就来详细了解一下,为什么会这么说?方法参数有两种类型:基础数据类型(数字,布尔值)对象下面我们分别来分析这两种情况。基础数据类型/** * 方法参数为基础数据类型 */public class ParamTest...原创 2018-07-10 21:33:21 · 246 阅读 · 0 评论 -
Java基础系列(十):对象构造
默认域初始化如果在构造器中没有显式地给域赋予初值,如下这样:private String name;private double salary;//默认域初始化public User() {} 那么就会自动地赋为默认值:数值为0,布尔值为false,对象为null,但是我们一般不建议这么做,这样会大大的增加了阅读程序的难度,比如说上面的程序中,name被初始化为nu...原创 2018-07-11 21:02:05 · 192 阅读 · 0 评论 -
Java基础系列(十一):注释
前言曾经看到过一句话:“我最烦的就是写注释和看不写注释的代码”,也许有玩笑的成分的在,但是不可否认的是,注释对于代码来说,是必不可少的,它可以大大的增加代码的可读性,好的注释就像好看的皮囊,让人赏心悦目。JDK给我们提供一个很有用的工具,叫做javadoc,它可以由源文件生成一个HTML文档,理想状态下的注释就是要起到这样的效果,而大多数的时候我们并不能做到这一点,下面我们来了解一下注释都...原创 2018-07-15 20:22:13 · 224 阅读 · 0 评论 -
Java基础系列(十二):继承
前言我们接下来要学习的是Java中一个非常重要的概念:继承。利用继承,我们可以通过一个已经存在的类构造一个新的类,继承已经存在的类就是服用这些类的方法和数据域,并且在原本类的基础上可以添加一些新的方法和域,以满足新的需求。父类(超类)与子类在Java中我们使用extends关键字来定义子类,extends代表的就是继承,如下例子:/** * VIP用户类 * @auth...原创 2018-07-15 20:22:56 · 182 阅读 · 0 评论 -
Java基础系列(十三):多态
多态的小例子我们来看以下这段程序:public class Employee { private String name; private double salary; private LocalDate hireDay; public Employee(String name, double salary, int year, int month...原创 2018-07-15 20:23:27 · 204 阅读 · 0 评论 -
Java基础系列(十四):方法调用
方法签名方法的签名包括两部分,方法名和参数列表。如果在子类中定义了一个与父类签名相同的方法,那么子类中的这个方法就会覆盖父类中这个相同签名的方法。这里需要注意一点,在覆盖一个方法的时候,子类方法不能低于父类方法的可见性,比如一个同样方法签名的方法在父类中的修饰符是public,而在子类中是private。但是需要注意的是,返回类型并不是方法签名的一部分,所以,在覆盖方法的时候,一定要保...原创 2018-07-22 17:41:02 · 279 阅读 · 0 评论 -
Java基础系列(十五):final关键字
前言final可以用在以下三种情况:数据,方法和类。final 类有时候,我们可能希望阻止其他人利用我们的编写的类来创建一个子类,可以将final关键字放到类定义的前面,final类被称为无法扩展的类,定义方式如下所示:final class Man { public String name; public void printName(){ ...原创 2018-07-22 17:41:58 · 234 阅读 · 0 评论 -
Java基础系列(十六):抽象类
为什么有抽象类如果把类的继承结构看成一个金字塔,毫无疑问,位于金字塔顶端的父类更具有通用性,也会更加抽象,我们通常使用这个类来作为派生其他类的基类,而不是直接作为实例类。比如,Tiger类和Rabbit类都是属于Animal类的一个子类,我们可以给他们一个getDescription()方法来对他们的特点进行描述,在Tiger类和Rabbit类中对于这个方法的实现很简单,只需要返回一个带有...原创 2018-07-22 17:42:31 · 205 阅读 · 0 评论 -
Java基础系列(十九):自动装箱和自动拆箱
包装器有些时候,我们需要把类似于int,double这样的基本数据类型转成对象,于是设计者就给每一个基本数据类型都配置了一个对应的类,这些类被称为包装器。包装器整体来说分为四大种:Number,Number类派生出了Integer,Double,Long,Float,Short,Byte这六个小类分别代表了int,double,long,float,short,byte这六种基本数据...原创 2018-07-29 17:13:38 · 493 阅读 · 0 评论 -
Java基础系列(二十二):反射入门
反射是什么反射的作用用一句简单的话来将就是可以对代码进行操作的代码,这个特性经常在被用于创建JavaBean中,通常造轮子的人会用到这个特性,而应用程序员用到这个特性的场景则较少。能够分析类能力的程序教叫做反射,简单来说来将就是可以对代码进行操作的代码。反射机制的功能极为强大,可以用来:在运行时分析类的能力在运行时查看对象实现通用的数组操作代码利用Method对象来实现方法...原创 2018-07-29 17:15:45 · 203 阅读 · 0 评论 -
Java基础系列(二十三):反射进阶
运行时使用反射上一节中我们已经知道了如何查看任意对象的数据域名称和类型:获得对应的Class对象通过Class对象调用getDeclaredFields()那么我们如果想要在程序运行的时候获取数据域的具体值,应该怎么做呢?问题的关键是使用Filed类的get()方法,但是因为数据域是私有的,直接去访问这个数据域的话会抛出一个异常,反射机制的默认行为受限于Java的访问控制,如...原创 2018-07-29 17:16:21 · 242 阅读 · 0 评论 -
Java基础系列(二十四):接口
接口概述接口主要用来描述类具有什么功能,而并不给出每个功能的具体实现。一个类可以实现一个或多个接口,并在需要接口的地方,随时使用实现了相应接口的对象。接口主要就是对行为进行定义,而具体行为的实现还要看接口的实现类如何做到。接口中的所有方法自动地属于public,这一点很好理解,如果接口中的方法不能够被实现,那将毫无意义。因此,在接口中声明方法时,不必提供关键字public。提供实例域和...原创 2018-08-29 20:01:54 · 263 阅读 · 0 评论 -
Java基础系列(二十五):接口进阶
接口与抽象类在前面章节的学习中,我们对于接口和抽象类都已经有了一个大概的理解和消化,现在我们将从语法层面和设计层面两个方向来分析它们到底有什么不同:(一)语法层面抽象类可以有默认的方法实现,接口在Java版本1.8之前是完全抽象的,它根本不存在方法的实现,但是在1.8之后接口中可以存在静态方法和默认方法,本节下部分内容即将讲解默认方法在接口中的应用以及默认方法发生冲突的时候的两种...原创 2018-08-29 20:03:00 · 239 阅读 · 0 评论 -
Java基础系列(二十六):Lambda基础
Lambda定义lambda表达式是一个可传递的代码块,可以在以后执行一次或多次。Lambda语法lambda表达式由以下三部分组成:参数,箭头(->)以及一个表达式。如果代码要完成的计算无法放在一个表达式中,就可以像写方法一样,把这些代码放在{}中,并包含显式的return语句。下面我们来分不同的情况来了解Lambda表达式的语法。即使Lambda表达式没有参数,...原创 2018-08-29 20:03:51 · 261 阅读 · 0 评论 -
Java基础系列(二十七):Lambda进阶
变量作用域我们首先来看一个栗子:public static void repeatMessage(String text, int delay) { ActionListener listener = event -> { System.out.println(text); Toolkit.getDefaultToolkit().beep(...原创 2018-08-29 20:43:28 · 512 阅读 · 0 评论 -
Java基础系列(二十九):基本内部类
What内部类的定义很简单,正如它的名字所言,它是定义在另一个类中的类。Why内部类方法可以访问该类定义所在的作用域中的数据,包括私有的数据。内部类可以对同一个包中的其他类隐藏起来。当想要定义一个回调函数且不想编写大量代码的时候,使用匿名内部类比较便捷。HowJust A Demo First :public class InnerClassTest { ...原创 2018-09-02 21:13:49 · 163 阅读 · 0 评论 -
Java基础系列(三十):局部内部类
What局部内部类就是定义在某个方法内部的内部类,它的作用域仅限于这个方法。Why当我们在外围类中定义的内部类仅仅在某个方法中使用了一次,这种情况下,我们就可以选择去使用局部内部类。How以上节课的例子继续讲解,由于TestListener这个内部类仅仅在start方法中使用了一次,所以我们在这里可以使用局部内部类。public class InnerClass...原创 2018-09-04 21:04:52 · 3449 阅读 · 1 评论 -
Java基础系列(三十一):异常
为什么有异常机制假如在一个Java程序运行期间出现了一个错误,这个错误可能是由于文件包含了错误的信息,或者由于网络连接出现超时,或者就因为使用了无效的数组下标,或者试图使用一个没有赋值的对象(null)造成的。当这些错误出现的时候,我们希望程序可以返回到一种安全的状态或者允许用户保存所有操作的结果,并且以妥善的方式终止程序。但是要做到这些事情,并没有我们想象中的那么简单,因为检测或者引发这个错...原创 2018-09-28 13:14:10 · 206 阅读 · 0 评论 -
Java基础系列(三十二):断言 + 日志入门
断言在Java语言中,给出了3种处理系统错误的机制:抛出一个异常日志使用断言那我们应该在什么情况下去使用断言呢?断言失败是致命的,不可恢复的错误断言失败只用于开发和测试阶段。不应该使用断言向程序的其他部分通告发生了可恢复性的错误,或者,不应该作为程序向用户通告问题的手段,断言只应该用于在测试阶段确定程序内部的错误信息。在一个具有自我保护能力的程序中,断言很常用,假...原创 2018-09-28 13:16:43 · 349 阅读 · 0 评论 -
Java基础系列(三十三):日志进阶
前言上篇文章中,我们对于日志的使用进行了一个初步的学习和了解,这篇文章会对Java自带的基础日志框架进行进一步的深入学习和了解。自定义配置首先,我们可以通过直接去编辑配置文件去修改日志系统的各种属性,在默认的情况下,配置文件存在于:jre/lib/logging.properties一般来说,我们不会去修改这个文件,而是会去使用自己编写的配置文件来对不同的程序实现不同的日志管理的效果,此时...原创 2018-09-28 13:19:42 · 187 阅读 · 0 评论 -
Java Grammar:数据类型
Java的数据类型我们知道,Java是一种 强类型 语言,类型对于Java语言来说非常的重要不言而喻,在Java中,分为 基础数据类型 和 引用数据类型 ,其中基础数据类型分为了 四类八种:下面,我们来分别说一下这四类八种整型首先,需要说明一点,在Java的整形中不存在 unsigned 类型的数值,也就是说Java的整形都是有符号的可为正,可为负...原创 2019-08-06 07:00:00 · 769 阅读 · 0 评论