---恢复内容开始---

一、包装类——Wrapper

1.定义:针对八种基本数据类型定义相应的引用类型——包装类(封装类)

boolean——Boolean          byte——Byte

short——Short                   int——Integer

long——Long                    char——Character

float——Float                     double——Double

2.作用:有了类的特点,就可以调用类中的方法

3.注意事项

(1)基本数据类型和包装类的转换:JDK5.0以后,自动装箱和拆箱,即基本数据类型和包装类可以无缝连接,自动转换。

(2)基本数据类型、包装类 - -> String类:调用String类的静态的重载的valueOf(Xxx  xx)方法,例:

int i = 10;
// Integer ii = 10;
String str = String.valueOf(i);//"10"
// String str1 = String.valueOf(ii);

(3)String类 - ->基本数据类型、包装类:调用包装类的parseXxx(String str)方法,例:

String str = "10";
int i = Integer.parseInt(str);

二、设计模式之单例模式

1.概述:使一个类只能创建一个对象

2.特点

(1)私有化构造器,使得在类的外部不能调用构造器创建对象

(2)在类的内部创建一个静态的私有的类的实例,因为静态的方法只能调用静态的变量和方法

(3)通过一个静态的类的方法来返回实例

3.代码

public class Test{

    public static void main(String[] args){
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
System.out.println(s1 == s2);//输出true,说明是同一个实例
}
}
//饿汉式
class Singleton{ //私有化构造器
private Singleton(){
}
//在类的内部创建实例
private static Singleton instance = new Singleton(); //通过公共的静态的方法来返回实例
public static Singleton getInstance(){
return instance;
}
}
//懒汉式:延迟加载方式,可能存在线程安全问题
class Singleton1{ private Singleton1(){} private static Singleton1 instance = null; public static Singleton1 getInstance(){
if(instance == null){
instance = new Singleton1();
}
return instance;
}
}

三、抽象类——abstract

1.abstract修饰类,即抽象类的特点

(1)抽象类不可被实例化

(2)抽象类有构造器(凡是类都有构造器)

(3)抽象方法所在的类一定是抽象类

(4)抽象类中可以没有抽象方法

(5)只有通过子类继承抽象类并重写了所有的抽象方法后,该子类才可以实例化,否则,该子类还是一个抽象类,必须声明为抽象类

2.abstract修饰方法,即抽象方法的特点

(1)格式:没有方法体,没有{},如:public abstract void eat();

(2)抽象方法只保留方法的功能,而具体的执行交给继承抽象类的子类,由子类来重写此方法。

(3)abstract关键字不能修饰属性、私有方法、构造器、静态方法、final的方法。

3.模版方法设计模式——TemplateMethod

(1)概述:抽象类体现的就是一种模版模式的设计,抽象类作为多个子类的通用模版,子类在抽象类的基础上进行改造拓展。

(2)作用:当功能内部的一部分实现是确定的,一部分实现时不确定的,这时可以把不确定的部分暴露出去,让子类去实现。

(3)代码:

abstract class GetTime{
public final void getTime(){//此功能不需要重写,加final修饰
long start = System.currentTimeMillis();
code();//不确定的功能部分,提取出来,通过抽象方法实现
long end = System.currentTimeMillis();
System.out.println("花费的时间是:"+(end-start));
} public abstract void code();//不确定的功能由子类来重写实现 } class SubDemo extends GetTime{//子类实现code()抽象方法
public void code(){
for(int y = 0;y < 1000;y++){
System.out.println("y");
}
}
}

四、接口——interface

1.概述:接口可以看成一个特殊的抽象类,是常量和抽象方法的一个集合,不能包含变量、一般的方法。

2.特点

(1)接口没有构造器

(2)常量和抽象方法的修饰符都是固定的:

  常量:public static final

  方法:public abstract

(3)接口定义的是一种未实现的功能,由类来实现(implements),如:class CC extends DD implements AA

(4)实现接口的类,必须重写接口所有的抽象方法,才可以实例化,否则这个类仍为抽象类

(5)一个类可以实现多个接口

(6)接口与接口之间也可以是继承的关系,而且可以多继承,而类之间的继承只能是单继承的。

---恢复内容结束---

一、包装类——Wrapper

1.定义:针对八种基本数据类型定义相应的引用类型——包装类(封装类)

boolean——Boolean          byte——Byte

short——Short                   int——Integer

long——Long                    char——Character

float——Float                     double——Double

2.作用:有了类的特点,就可以调用类中的方法

3.注意事项

(1)基本数据类型和包装类的转换:JDK5.0以后,自动装箱和拆箱,即基本数据类型和包装类可以无缝连接,自动转换。

(2)基本数据类型、包装类 - -> String类:调用String类的静态的重载的valueOf(Xxx  xx)方法,例:

int i = 10;
// Integer ii = 10;
String str = String.valueOf(i);//"10"
// String str1 = String.valueOf(ii);

(3)String类 - ->基本数据类型、包装类:调用包装类的parseXxx(String str)方法,例:

String str = "10";
int i = Integer.parseInt(str);

二、设计模式之单例模式

1.概述:使一个类只能创建一个对象

2.特点

(1)私有化构造器,使得在类的外部不能调用构造器创建对象

(2)在类的内部创建一个静态的私有的类的实例,因为静态的方法只能调用静态的变量和方法

(3)通过一个静态的类的方法来返回实例

3.代码

public class Test{

    public static void main(String[] args){
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
System.out.println(s1 == s2);//输出true,说明是同一个实例
}
}
//饿汉式
class Singleton{ //私有化构造器
private Singleton(){
}
//在类的内部创建实例
private static Singleton instance = new Singleton(); //通过公共的静态的方法来返回实例
public static Singleton getInstance(){
return instance;
}
}
//懒汉式:延迟加载方式,可能存在线程安全问题
class Singleton1{ private Singleton1(){} private static Singleton1 instance = null; public static Singleton1 getInstance(){
if(instance == null){
instance = new Singleton1();
}
return instance;
}
}

三、抽象类——abstract

1.abstract修饰类,即抽象类的特点

(1)抽象类不可被实例化

(2)抽象类有构造器(凡是类都有构造器)

(3)抽象方法所在的类一定是抽象类

(4)抽象类中可以没有抽象方法

(5)只有通过子类继承抽象类并重写了所有的抽象方法后,该子类才可以实例化,否则,该子类还是一个抽象类,必须声明为抽象类

2.abstract修饰方法,即抽象方法的特点

(1)格式:没有方法体,没有{},如:public abstract void eat();

(2)抽象方法只保留方法的功能,而具体的执行交给继承抽象类的子类,由子类来重写此方法。

(3)abstract关键字不能修饰属性、私有方法、构造器、静态方法、final的方法。

3.模版方法设计模式——TemplateMethod

(1)概述:抽象类体现的就是一种模版模式的设计,抽象类作为多个子类的通用模版,子类在抽象类的基础上进行改造拓展。

(2)作用:当功能内部的一部分实现是确定的,一部分实现时不确定的,这时可以把不确定的部分暴露出去,让子类去实现。

(3)代码:

abstract class GetTime{
public final void getTime(){//此功能不需要重写,加final修饰
long start = System.currentTimeMillis();
code();//不确定的功能部分,提取出来,通过抽象方法实现
long end = System.currentTimeMillis();
System.out.println("花费的时间是:"+(end-start));
} public abstract void code();//不确定的功能由子类来重写实现 } class SubDemo extends GetTime{//子类实现code()抽象方法
public void code(){
for(int y = 0;y < 1000;y++){
System.out.println("y");
}
}
}

四、接口——interface

1.概述:接口可以看成一个特殊的抽象类,是常量和抽象方法的一个集合,不能包含变量、一般的方法。

2.特点

(1)接口没有构造器

(2)常量和抽象方法的修饰符都是固定的:

  常量:public static final

  方法:public abstract

(3)接口定义的是一种未实现的功能,由类来实现(implements),如:class CC extends DD implements AA

(4)实现接口的类,必须重写接口所有的抽象方法,才可以实例化,否则这个类仍为抽象类

(5)一个类可以实现多个接口

(6)接口与接口之间也可以是继承的关系,而且可以多继承,而类之间的继承只能是单继承的。

五、内部类

1.定义:在类的内部定义类,外面的类叫外部类,里面定义的类叫内部类。

2.分类:成员内部类(定义在类的内部且在方法外的);局部内部类(声明在方法内的)

3.特点

(1)内部类可以直接调用外部类的成员;外部类访问内部类时,需要创建一个内部类对象来访问内部类

(2)成员内部类相当于类的成员,可以使用各种修饰符(private public protected static final)

(3)创建静态内部类和非静态内部类成员时的区别(见代码)

(4)外部类和内部类的同名变量的使用(见代码)

public class Test{
public static void main(String[] args){
//创建静态内部类的对象,可以直接通过外部类调用静态内部类的构造器
Person.Dog dog = new Person.Dog();
//创建非静态内部类的对象,必须先创建外部类的对象,通过该对象调用内部类的构造器
Person p = new Person();
Person.Bird bird = p.new Bird(); bird.info();
bird.setName("杜鹃");
}
} class Person{
String name="韩梅梅";
int age;
//成员内部类(非静态的)
class Bird{
String name="黄鹂";
int id;
public Bird(){ }
public void setName(String name){//同名变量的使用
System.out.println(name);//杜鹃
System.out.println(this.name);//黄鹂
System.out.println(Person.this.name);//韩梅梅
}
public void info(){
show();//直接调用外部类的方法
}
}
//静态成员内部类
static class Dog{ }
public void show(){
System.out.println("我是外部类的show方法");
}
}

4.局部内部类及匿名内部类的使用

public Comparable getComparable(){//返回值为Comparable这个接口的对象
//创建一个实现Comparable接口的类:局部内部类
class MyComparable implements Comparable{ @Override
public int CompareTo(java.lang.Object o){
return ;
}
}
return new MyComparable();//返回一个实现类的对象
}
//使用方法二
public Comparable getComparable1(){
//返回一个实现Comparable接口的匿名内部类的对象
return new Comparable(){ @Override
public int CompareTo(java.lang.Object o){
return ;
}
}
}

Java语法基础学习DaySeven的更多相关文章

  1. Java语法基础学习DayEighteen(常用类)

    一.String类 1.特点 String代表不可变的字符序列,底层用char[]存放. String是final的. 2.内存解析 3.常用方法 int length() char charAt(i ...

  2. Java语法基础学习DaySix

    一.JavaBean——可重用组件 1.JavaBean是指符合以下标准的Java类: (1)类是公共的 (2)有一个无参的公共的构造器 (3)有属性,且有对应的get.set方法 2.好处 用户可以 ...

  3. Java语法基础学习DayThree

    一.流程控制语句补充 1.switch语句 格式: switch(表达式) { case 值1: 语句体1; break; case 值2: 语句体2; break; ... default: 语句体 ...

  4. Java语法基础学习DayTwentyOne(网络编程)

    一.IP地址和端口号 1.作用 通过IP地址,唯一的定位互联网上一台主机. 端口号标识正在计算机上运行的进程,不同进程有不同的端口号,被规定为一个16位的整数0~65535,其中0~1023被预先定义 ...

  5. Java语法基础学习DayTwenty(反射机制续)

    一.Java动态代理 1.代理设计模式的原理 使用一个代理将对象包装起来, 然后用该代理对象取代原始对象. 任何对原始对象的调用都要通过代理. 代理对象决定是否以及何时将方法调用转到原始对象上. 2. ...

  6. Java语法基础学习DayNineteen(反射机制)

    一.Refection定义 1.概述 Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性 ...

  7. Java语法基础学习DaySeventeen(多线程续)

    一.线程的特点 1.线程的分类 java中的线程分为两类:守护线程和用户线程.唯一的区别是判断JVM何时离开. 守护线程是用来服务用户线程的,通过在start()方法前调用Thread.setDaem ...

  8. Java语法基础学习DaySixteen(多线程)

    一.多线程的创建 1.作用 程序需要同时执行两个或多个任务时需要多线程. 程序需要实现需要等待的任务时,如用户输入.文件读写操作.网络操作.搜索等,需要多线程. 需要一些后台运行的程序时,需要多线程. ...

  9. Java语法基础学习DayFifteen(IO续)

    一.缓冲流(处理流的一种) 1.作用:可以提高文件操作的效率 2.使用BufferedInputStream和BufferedOutputStream实现非文本文件的复制 特点:flush()方法 代 ...

随机推荐

  1. 关于Androidstudio无法获取到所有的SDk版本,需要挂国内镜像的问题

    由于墙的原因 我们在使用AndroidStudio的时候SDK Manager无法获取到所有的版本 需要我们设置下使用国内的镜像 ****首先打开Android SDK Manager  然后按照如图 ...

  2. [LintCode] Number of Islands(岛屿个数)

    描述 给一个01矩阵,求不同的岛屿的个数. 0代表海,1代表岛,如果两个1相邻,那么这两个1属于同一个岛.我们只考虑上下左右为相邻. 样例 在矩阵: [ [1, 1, 0, 0, 0], [0, 1, ...

  3. jenkins 构建selenium python (浏览器驱动是chromedriver)的解决方法

    1.在chrome浏览去中输入chrome://version  查看chrome 的安装位置 2.将chromedriver 驱动添加到可执行文件路径中 3.在Jenkins中 的系统设置中-环境变 ...

  4. Python操作excel的几种方式--xlrd、xlwt、openpyxl

    openpyxl xlrd xlwt   在处理excel数据时发现了xlwt的局限性–不能写入超过65535行.256列的数据(因为它只支持Excel 2003及之前的版本,在这些版本的Excel中 ...

  5. 关于AndroidStudio混淆配置,简单的整理(转)

    1.首先需要在app下的build.gradle下配置,true表示编译时会混淆代码<span style="font-size:18px;">buildTypes { ...

  6. Mybatis中int insertSelective()的相关问题

    1.selective的意思是:选择性2.insertSelective--选择性保存数据:比如User里面有三个字段:id,name,age,password但是我只设置了一个字段:User u=n ...

  7. springboot 定时任务部署至linux服务器上后会执行两次问题

    springboot定时任务在本地运行时,正常执行且只执行一次,但是在maven打包成war包,部署至linux服务器上之后,定时任务奇怪的执行了两次. 由于未做负载均衡,所以可以先排除是因为多台服务 ...

  8. 使用ajax请求接口,跨域后cookie无法设置,全局配置ajax;及使用axios跨域后cookie无法设置,全局配置axios

    问题一: 使用ajax/axios跨域请求接口,后端放行了,能够正常获取数据,但是cookie设置不进去,后端登录session判断失效 ajax解决办法: //设置ajax属性 crossDomai ...

  9. tar打包时的排除选项

    1. 在命令行排除文件时,用 --exclude, 可以用多个--exclude .  可以用=号,也可以不用 如   tar  -cvf  ./aaa.tar   ./tvc   --exclude ...

  10. Hadoop---日志服务器

    Hadoop---日志服务器 1.历史服务器: 启动: 1)测试使用: 1.做一个任务: 2.接受任务: 3.执行任务: 4.执行任务完成: 2)日志文件产生: 成功后:   失败后: 点击进入His ...