第76节:Java中的基础知识
第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.lang class string java.lang.object java.lang.string public final class string exteds objectt implements serializable, comparable<string>, charsequence
string str = "abc"; char data[]={'a','b','c'}; string str = new string(data); object.tostring() stringbuffer stringbuilder charset serialized 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.0 class test1 { public void init(){} } class test2 extends test1{ @override public void init(){} }
// jdk6.0 interface test1{ public void init(); } class test2 implements test1 { @override public void init(){} }
@suppresswarnings("serial") @suppresswarnings("null") rawtypes: 类型安全 unused: 不使用
@interface class 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);
设计模式
- 创建型模式
- 结构型模式
- 行为型模式
工厂方法 抽象工厂 建造者模式 单态模式 原型模式
适配器模式 桥接模式 组合模式 装饰模式 外观模式 享元模式 代理模式
责任链模式 命令模式 解释器模式 迭代器模式 中介者模式 备忘录模式 观察者模式 状态模式 策略模式 模板方法 访问者模式
如果看了觉得不错
点赞!转发!
达叔小生:往后余生,唯独有你
you and me, we are family !
90后帅气小伙,良好的开发习惯;独立思考的能力;主动并且善于沟通
简书博客: 达叔小生
结语
- 下面我将继续对 其他知识 深入讲解 ,有兴趣可以继续关注
- 小礼物走一走 or 点赞
上一篇: 爱剪辑怎么删除中间一段视频?