第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后帅气小伙,良好的开发习惯;独立思考的能力;主动并且善于沟通
简书博客: 达叔小生
https://www.jianshu.com/u/c785ece603d1
结语
- 下面我将继续对 其他知识 深入讲解 ,有兴趣可以继续关注
- 小礼物走一走 or 点赞
第76节:Java中的基础知识的更多相关文章
- 第79节:Java中一些要点
第79节:Java中一些要点 前言 一些知识点忘了没,可以通过一个点引出什么内容呢?做出自己的思维导图,看看自己到了哪一步了呢 内容 如果有人问jre,jdk,jvm是什么,你怎么回答呢? jre的英 ...
- 第78节:Java中的网络编程(上)
第78节:Java中的网络编程(上) 前言 网络编程涉及ip,端口,协议,tcp和udp的了解,和对socket通信的网络细节. 网络编程 OSI开放系统互连 网络编程指IO加网络 TCP/IP模型: ...
- 第69节:Java中数据库的多表操作
第69节:Java中数据库的多表操作 前言 学习数据库的多表操作,去电商行业做项目吧!!! 达叔,理工男,简书作者&全栈工程师,感性理性兼备的写作者,个人独立开发者,我相信你也可以!阅读他的文 ...
- 第68节:Java中的MYSQL运用从小白到大牛
第68节:Java中的MYSQL运用从小白到大牛 前言 学习java必备要求,学会运用!!! 常见关系化数据库 BootStrap是轻量级开发响应式页面的框架,全局css组件,js插件.栅格系统是将页 ...
- Java并发(基础知识)—— Executor框架及线程池
在Java并发(基础知识)—— 创建.运行以及停止一个线程中讲解了两种创建线程的方式:直接继承Thread类以及实现Runnable接口并赋给Thread,这两种创建线程的方式在线程比较少的时候是没有 ...
- 【Java面试】基础知识篇
[Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充.源码分享见个人公告.Ja ...
- 第83节:Java中的学生管理系统分页功能
第83节:Java中的学生管理系统分页功能 分页功能一般可以做成两种,一种是物理分页,另一种是逻辑分页.这两种功能是有各自的特点的,物理分页是查询的时候,对数据库进行访问,只是查一页数据就进行返回,其 ...
- 第82节:Java中的学生管理系统
第82节:Java中的学生管理系统 学生管理系统的删除功能 删除,点击超链接,点击弹出对话框式是否进行删除,如果确定,就删除,超链接执行的是js方法,在js里访问,跳转servlet,,servlet ...
- 第80节:Java中的MVC设计模式
第80节:Java中的MVC设计模式 前言 了解java中的mvc模式.复习以及回顾! 事务,设置自动连接提交关闭. setAutoCommit(false); conn.commit(); conn ...
随机推荐
- yum 安装时遇到“UnicodeDecodeError: 'ascii' codec”的问题
今天新安装了一个6.9系统,配置好本地yum源后,用yum安装时报了以上的错误信息,在/etc/yum.repos.d/目录下多出了TTT的一个目录 (手动问号),在百度上查了一些文档. 解决方法:1 ...
- windows socket 文件下载上传
socket 图片 文件 下载上传 数据库 线程池 存入图片 等
- HTTP之状态码
状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别: 1xx:指示信息--表示请求已接收,继续处理 2xx:成功--表示请求已被成功接收.理解.接受 3xx:重定向--要完成请求必须进行 ...
- union: redis config
# how to save to disk # warning: how to disable, just comment this config save $second $changes
- #error "OpenCV 4.x+ requires enabled C++11 support"解决方法
报错的本质是需要c++11的支持,顾名思义,当前的编译环境是c++11以下的版本.我用的cmake编译,因此再cmakelists文件内添加设置c++标准为14就可以编译通过. )
- mysql-5.7.17-winx64 的安装配置
在Mysql中下载 解压后,没有安装,需要设置环境变量,设置my.ini配置 设置环境变量 操作如下: 1)右键单击我的电脑->属性->高级系统设置(高级)->环境变量 点 ...
- oracle 中如何查看某个表所涉及的存储过程
SELECT DISTINCT * FROM user_source WHERE TYPE = 'PROCEDURE' AND upper(text) LIKE '%PS_KL_ABS_002_DAT ...
- k8s storageClass对接nfs
前提:已存在一个nfs服务 192.168.137.11:/home/nfs_data 下面以rbac方式对接nfs 1.创建/root/k8s-nfs-rbac/serviceaccount.yam ...
- Oracle去除重复(某一列的值重复),取最新(日期字段最新)的一条数据
转自 : http://blog.csdn.net/nux_123/article/details/45037719 问题:在项目中有一张设备检测信息表DEVICE_INFO_TBL, 每个设备每天都 ...
- ubuntu安装苹果Windows以及微软雅黑consolas字体
ubuntu安装苹果Windows以及微软雅黑consolas字体 ubuntu安装苹果字体 wget http://drive.noobslab.com/data/Mac/macfonts.zip ...