第76节:Java中的基础知识

作者 : 开心源码 本文共6228个字,预计阅读时间需要16分钟 发布时间: 2022-05-12 共136人阅读

标题图

第76节:Java中的基础知识

字数

设置环境,安装操作系统,安装备份,就是镜像,jdk配置环境,eclipse下载解压即用,下载tomcat

折佣动态代理商处理网站的字符集编码问题

使用request.getParameter()取得的数据能否有乱码问题.

自己设置注解

@: @Test等.注解就是一种数据类型

package com.dashucoding.test;import java.util.ArrayList;import java.util.List;public class TestAnnotation {    // 注解含义: 公告当前的方法是重写的方法    @Override    public String toString() {        return super.toString();    }        // @Test    public void test01() {        // 不使用 不加警告        @SuppressWarnings("unused")        int i;        // 让不使用的变量,和泛型不报警告        @SuppressWarnings({ "rawtypes", "unused" })        List a = new ArrayList();    }        // @Deprecated: 公告方法是过时的方法    }
java.langClass Stringjava.lang.Objectjava.lang.Stringpublic final class String exteds Objecttimplements Serializable, Comparable<String>, CharSequence
String str = "abc";char data[]={'a','b','c'};String str = new String(data);Object.toString()StringBufferStringBuilderCharsetSerialized Form
// 编译期间有效@Override@Deprecated@Suppresswarning

自己定义注解

// 定义注解public @interface MyTest{ // 给注解定义属性public long time();}格式public @interface 注解名称{ public 属性类型 属性名称 1() default 默认值;}
//以下注解的含义是:假如当前方法的执行时间超过1秒,会报错@Test(timeout=1000)@Deprecated//以下注解的含义是:公告以下的方法是过时的方法,不建议大家使用//@SuppressWarnings("unused")抑制编译器发生警告信息//@SuppressWarnings({ "unused", "rawtypes" })抑制编译器发生警告信息//@Override公告当前的方法是重写父类的方法

注解的属性支持的类型有

基本数据类型(4类8种)String,Class,Annotation(注解类型),枚举类型
public class UserDao {        static{        System.out.println("加载静态代码段的消息");    }        @MyTest    public void addUser(){        System.out.println("添加客户");    }    @MyTest    public void delUser(){        System.out.println("删除客户");    }    @MyTest    public void uptUser(){        System.out.println("升级客户");    }    public void getUser(){        System.out.println("获取客户");    }}
注解Retention说明当前自己设置注解的作用域(Class,Source,Runtime)//@Retention(RetentionPolicy.RUNTIME)注解Target说明当前的自己设置注解的目标对象//@Target(ElementType.METHOD)public @interface MyTest {    //在MyTest注解中定义成员属性,默认值为-1    public long timeout() default -1;}

注解:自己设置,要说明作用域和目标对象.

设计模式:

单例模式,工厂模式,

// 单例模式public class Stu {    private  Stu() {    }        private static Stu stu=new Stu();        public static  Stu getInstance(){        return stu;    }}public class TestStu {    public static void main(String[] args) {        Stu stu1=Stu.getInstance();        Stu stu2=Stu.getInstance();        Stu stu3=Stu.getInstance();        System.out.println(stu1);        System.out.println(stu2);        System.out.println(stu3);    }}

设计模式,用于处理各种问题的套路.

装饰者模式:

要知道接口中的方法,自己定义装饰类实现接口.传参数,为不能继承的实现类.

public interface ICar {    public void start();    public void run();    public void stop();}public class GoogleCar implements ICar{    @Override    public void start() {        System.out.println("控制谷歌的汽车启动");    }    @Override    public void run() {        System.out.println("控制谷歌的汽车运行");            }    @Override    public void stop() {        System.out.println("控制谷歌的汽车中止");    }}public class TestCar {    public static void main(String[] args) {         ICar car=new GoogleCar();         car.start();         car.run();         car.stop();    }}
public interface ICar {    public void start();    public void run();    public void stop();}public class GoogleCar implements ICar{    @Override    public void start() {        System.out.println("判断天气能否良好");        System.out.println("判断路况能否良好");        System.out.println("控制谷歌的汽车启动");    }    @Override    public void run() {        System.out.println("控制谷歌的汽车运行");            }    @Override    public void stop() {        System.out.println("控制谷歌的汽车中止");    }}public class TestCar {    public static void main(String[] args) {         ICar car=new GoogleCar();         car.start();         car.run();         car.stop();    }}
public interface ICar {    public void start();    public void run();    public void stop();}public class GoogleCar implements ICar{    @Override    public void start() {                System.out.println("控制谷歌的汽车启动");    }    @Override    public void run() {        System.out.println("控制谷歌的汽车运行");            }    @Override    public void stop() {        System.out.println("控制谷歌的汽车中止");    }}public class MyCar extends GoogleCar{    @Override    public void start() {        System.out.println("判断天气能否良好");        System.out.println("判断路况能否良好");        super.start();    }}public class TestCar {    public static void main(String[] args) {         ICar car=new MyCar();         car.start();         car.run();         car.stop();    }}
public interface ICar {    public void start();    public void run();    public void stop();}public final class GoogleCar implements ICar{    @Override    public void start() {                System.out.println("控制谷歌的汽车启动");    }    @Override    public void run() {        System.out.println("控制谷歌的汽车运行");            }    @Override    public void stop() {        System.out.println("控制谷歌的汽车中止");    }}public class MyCar implements ICar{        ICar car;        public MyCar(ICar car) {        this.car=car;    }        @Override    public void start() {        System.out.println("检查天气能否良好");        System.out.println("检查路况能否拥堵");        car.start();    }    @Override    public void run() {        car.run();          }    @Override    public void stop() {        car.stop();         }}public class TestCar {    public static void main(String[] args) {         ICar car=new MyCar(new GoogleCar());         car.start();         car.run();         car.stop();    }}

缺点

缺点就是接口中的方法过多,导致修饰类中的方法过多

动态代理商模式:

字节码加载器,把字节码文件加载到内存,这类程序简称为字节码加载器.底层实现,利用io流技术.

字节码加载器3种.

public interface ICar {    public String start(int a,int b);    public void run();    public void stop();}public final class GoogleCar implements ICar{    public void fly(){}            @Override    public String start(int a,int b) {                System.out.println("控制谷歌的汽车启动");                return "start...."+a+" "+b;    }    @Override    public void run() {        System.out.println("控制谷歌的汽车运行");            }    @Override    public void stop() {        System.out.println("控制谷歌的汽车中止");    }}public class Test {    public static void main(String[] args) {        Class[] clazz = GoogleCar.class.getInterfaces();        Class cla=clazz[0];        //获取ICar.class字节码对象上所有的方法        Method[] mds = cla.getMethods();        for (Method method : mds) {            System.out.println(method.getName());        }    }}

小结

自己设置注解
动态代理商处理网站字符集编码
jdk提供的三个注解作用
注解的使用
注解的定义和解析
Proxy编写动态代理商类
类加载器的作用

自己设置注解模拟@Test

使用@Test对程序进行测试,使用Junit是单元测试的工具.什么是注解呢,Annotation注解是一种代码级别的说明.

和注释相比,注释是给开发人员看的,注解是给计算机提供相应的信息.

注解究竟有什么用呢?
编译检查,代码分析,编写文档

jdk提供注解

@Deprecated 表示被修饰的方法已经过时了.@Override jdk5.0表示复写父类的方法,jdk6.0表示是实现接口的方法@SuppressWarnings表示抑制警告deprecation 过时rawtypes 忽略类型安全unused 忽略不能使用unchecked 忽略检查null 忽略空指针all 忽略所有
// 方法已过期class Test { @Deprecated public void init(){ }}
jdk 5.0class Test1 { public void init(){}}class Test2 extends Test1{ @Override public void init(){}}
// jdk6.0interface Test1{ public void init();}class Test2 implements Test1 { @Override public void init(){}}
@SuppressWarnings("serial")@SuppressWarnings("null")rawtypes: 类型安全unused: 不使用
@interfaceclass interface enum

自己设置注解

// 定义注解@interface MyAno{ }
@interface MyAno{ public String username() default "jack";}

属性格式: 修饰符, 返回值类型 属性名() [default 默认值]

修饰符: 默认值 public abstract
只能是public abstract

返回值类型,基本类型,字符串String,Class,注解,枚举

属性名:自己设置

default默认值

效果效果

小结

类加载器

什么是类加载器,类加载器就是负责加载类的对象.

class文件加载到内存生成Class对象,所有的类加载器都是java.lang.ClassLoader的子类.

类加载器加载机制是全盘负责委托机制.

动态代理商处理全站乱码问题

request.getMethod(); 获取当前请求类型request.setCharacterEncoding(“utf-8”); String v=request.getParameter(name);

设计模式

  1. 创立型模式
  2. 结构型模式
  3. 行为型模式
工厂方法笼统工厂建造者模式单态模式原型模式
适配器模式桥接模式组合模式装饰模式外观模式享元模式代理商模式
责任链模式命令模式解释器模式迭代器模式中介者模式备忘录模式观察者模式状态模式策略模式模板方法访问者模式

假如看了觉得不错

点赞!转发!

达叔小生:往后余生,唯独有你
You and me, we are family !
90后帅气小伙,良好的开发习惯;独立思考的能力;主动并且善于沟通
简书博客: 达叔小生
https://www.songma.com/u/c785ece603d1

结语

  • 下面我将继续对 其余知识 深入讲解 ,有兴趣可以继续关注
  • 小礼物走一走 or 点赞

上一篇 目录 已是最后

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 第76节:Java中的基础知识

发表回复