【Java进阶】Java常用API
StringBuilder概述
是java编写的一个专门用于字符串拼接的类,可以当成一个字符串拼接的容器使用,提供了对容器中的数据进行增删改的功能,并提升了字符串的拼接效率;
作用
提供了字符串拼接,反转,修改内容的方法,弥补了字符串对象不能修改内容的缺点;
提升了字符串拼接的效率;
使用方式
由于类中的方法都是非静态的,而且字符串工具,你没有个对象调什么方法,所以还是老老实实造对象吧。
利用构造方法创建对象;
面向创建好的对象直接调用类中的方法即可;
常用方法
方法介绍
空参,全参构造
append(任意类型):将任意的数据类型追加到StringBuilder对象的末尾并返回对象本身
reverse():反转sb对象
对象名.length():返回对象的长度
对象名.toString():将StringBuilder对象转为String基本数据类型
代码案例12345678910111213141516171819/* 练习 StringBuilder入门 */public class StringBuilderCourse { public ...
【Java进阶】包装类
包装类概述
在开发中,经常使用包装类对字符串和基本类型数据进行相互转换。- 想想为什么不用强制(隐式)类型转换
就是8个基本数据类型所对应的引用数据类型;
在玩包装类时候,有两点比较重要的东西
创建包装类的对象方式、自动装箱和拆箱的特性;
利用包装类提供的方法对字符串和基本类型数据进行相互转换
作用
因为包装类中提供了一些方法和属性,供程序员可以调用这些方法和属性直接操作数据;
对应关系
规律:
Int类型的包装类是Integer
char 类型的包装类是Character
其他类型的包装类都是首字母大写
自动拆装箱学习Example123456789101112131415161718//1.创建Integer对象,封装基本类型数据10Integer a = new Integer(10);//2.使用Integer类的静态方法valueOf(数据)Integer b = Integer.valueOf(10);//3.还有一种自动装箱的写法(意思就是自动将基本类型转换为引用类型)Integer c = 10;//4.有装箱肯定还有拆箱(意思就是自动将引用类型转换为基 ...
【Java进阶】内部类&枚举&泛型
交友须带三分侠气,作人要存一点素心。——《小窗幽记》
[译文] :交朋友应该带着三分侠义气,做人要保存一点素净心。
内部类
内部类的精华: 匿名内部类, 而匿名内部类的作用恰恰就是简化了代码, 让我们可以少些一个类(实现类)
内部类说白了, 就是类中嵌套定义一个类.虽然方法与方法之间不能嵌套定义, 但是类却能够嵌套, 类似于
123456public class Car{ //内部类 public class Engine{ }}
成员内部类
就是在类中成员变量/成员方法的位置, 定义了一个内部类, 类似于成员变量、成员方法。
代码举例:12345678910111213141516171819202122232425262728293031323334353637public class Outer { private int age = 99; public static String a="小王"; // 成员内部类 publi ...
【Java进阶】接口和多态(附JDK8和9新特性)
接口概述接口是java中的一种引用数据类型,使用interface关键字表示,里面可以写常量和抽象方法;
在JDK7及以前只能写常量及抽象
可以简单的把接口理解成一种规范, 谁实现了这个接口就要遵守该规范
JDK7以前1只能写常量和抽象方法;
JDK7以后1234jdk8新增了默认方法和静态方法,jdk9新增了私有方法;默认方法,是为了让所有的实现类对象,直接调用;静态方法,是为了让调用者通过接口直接调用方法;(接口中的静态方法,不能通过实现类对象调用)私有方法,是为了提升多个默认方法或多个静态方法中出现的共性内容的复用性;
为什么使用接口1接口相当于是"规范",让实现类实现接口之后,相当于"满足了某种规范",让调用者可以根据接口规范,调用实现类中的具体内容;
什么时候可以使用接口1任意类中只要有"方法",就可以针对方法,设计出接口;
如何编写接口12定义接口使用 interface;类实现接口使用 implements;
CodeDemo1234567891011121314151617181920212 ...
【Java进阶】模板设计模式
模版设计模式概述1设计了一个固定的开头和结尾的内容,正文内容由子类负责填充;
为什么使用模版1使用模版可以将通用的代码提前设计到模版中,从而提升代码的复用性;
在哪里使用1在一些框架或特定的技术中可以使用;
如何编写
写了一个模版方法,需要使用final修饰,目的是让子类直接使用,而不能重写;
写了一个抽象方法,目的是为了让子类重写,填充内容;
CodeDemo1234567891011121314151617181920212223242526272829public abstract class Zwmb { /* 创建一个作文模板 */ public final void write(){ System.out.println("这是我的爸爸!"); this.content(); System.out.println("啊!这就是我的爸爸!"); } public abstract void content(); ...
【Java进阶】final及抽象类
final关键字(※)final可以修饰类、修饰方法、修饰变量。
被final修饰的类,不能被其他类继承;
被final修饰的方法,不能被子类重写;
重写了父类就会报错
final修饰变量
如果修饰的是基本数据类型: 数据值不能改变
如果修饰的是引用数据类型: 地址值不能改变,但是地址值中的数据内容可以改变;
Examples
123456789101112131415// 1, 父类的方法用final修饰,子类就不能重写// 创建子类对象,调用final的abc方法, abc方法是父类的Zi z = new Zi();z.abc();// 2, final修饰的变量,不能改变值final int a = 5;// a = 6;// 3, final修饰的引用数据类型(数组, 集合等),不能修改地址值final int[] arr = {2, 5, 8};// arr = new int[3]; 报错,因为对象变化了,地址值也会变化,跟final违背// 但是可以更改地址值内的数据arr[1] = 10;System.out.println ...
Java进阶(全)
想写几篇短的,奈何短篇文章确实不利于之后的翻阅, 以及工作上效率的提升.考虑到这点, 于是乎将所有的Java进阶的内容全部放到一篇文章中了, 其实前面也有零零散散的写过一些进阶的和基础的文章.
Tag: Java | SilverSucks (weiswift.github.io)
一些话想对自己以及朋友们分享:
苏格拉底曾说过:“未经审视的人生,是不值得过的”。
他老人家是想表达:生活,不是通过世俗的物质方式去度过,而是要透过理性,审视人的生命的终极需求,从而引导出一种新的生活态度。
哲学角度有点高,也不是所有人每天都会去思考生命的终极需求。但不可否认的是,我们的人生,的确需要审视!
好啦,开始本篇进阶教程;首先进阶的最重要的就是面向对象以及面向接口编程思想.
面向对象
面向对象的三大主要特性就是封装, 继承, 多态.
在面向对象之前,还有几个关键字.
Static关键字
Static可以修饰成员变量,成员方法, 代码块
Static修饰成员变量的时候:该变量作为类变量, 被所有的对象所共享.应用场景为计数器
Static修饰成员方法的时候: 该方法作为静态方法, 可以通 ...
【Java进阶】Interface's Benefit(学生管理系统案例)
Java学生管理系统
只是为了练习接口设计的一个学生系统小案例,算不上真正的学生管理系统.
需求说明
概要设计
具体实现
CodeDemo123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154// showAll 接口public interface ShowAll { void printInfo();}// sh ...
Java基础(全)
千里之堤毁于蚁穴,九层之台起于垒土。
吾观今人,或欲求快速成功,或贪图短暂荣光,而忽略了基础之重要性。基础之重要,犹如养生之道,长期积累,方能相辅相成,不可偏废。抱歉, 写成文言文了,一句话基础不牢地动山摇…..
Java项目结构
这个要单独说一下,Java作为一门高级语言,其结构化的设计思想也表现的淋漓尽致.
按照大小分别是项目>模块>包>类, 如果想建立day02的模块只需要在project下面新建module就行了
效果: day01和day02就能并列了(学习和测试的时候使用.)
变量和数据基本类型特殊变量定义
这里普通的变量就不说了,例如什么int, String, double这种数据类型, 一般人都会用的.
这里说一下三个特殊的基本类型
char类型变量,可以写数字,也可以用单引号写内容,建议使用单引号写内容;
1234例如:char a1 = 'a';char a2 = 97;上面两个变量的效果是一样的!
long类型变量,建议数字后面添加 L或 l;
例如: long b = 5555555L或者lon ...
【Java进阶】this和super及子父类构造方法访问流程
Java在学习的时候一般很少会注意的一些点,以及面向实际操作过程中的一些Demo吧主要是。
还有this和super这两个关键字的正确用法。
this和super关键字的作用
而一般用的最多的还是
因为
this.成员变量一般用于区分实例变量和局部变量。
super.成员方法用于访问父类的成员方法。
两种情况一般都是比较常见的,所以着重区别一下。
子父类构造方法访问流程抛砖引玉
创建子类对象的时候,一定是先找子类对应的构造方法;
在子类构造方法的第一行,一定会调用父类的构造方法,此时就会执行父类的构造方法,对父类进行初始化;父类初始化的内容,专供当前这个子类独享使用;
当父类的构造方法执行完成之后,才会执行子类构造方法中的其他代码,完成子类对象的初始化;
CodeDemo主要分三个类:父类,子类,Test测试类
Tips:
输出打印对象
在sout打印对象的时候,如果没有重写toString方法,则默认打印包名.类名@地址值这种格式
创建子类对象:首先调用子类构造器方法,然后super(有参则调用父类全参构造,无则调用空参构造)
父类12345678 ...
