
Java-基础
wangfy_
这个作者很懒,什么都没留下…
展开
-
spring 动态代理
概括:spring aop的实现原理: 动态代理 cglib代理动态代理代理模式: 静态代理 动态代理(Spring如果发现被代理的类有接口的话,就用动态代理,否则用cglib)动态代理 反射JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消...原创 2019-03-15 21:38:59 · 6684 阅读 · 0 评论 -
spring AOP
配置进行织入,将通知织入目标对象中:原创 2019-03-14 21:10:45 · 97 阅读 · 0 评论 -
final/finally/finalize,return和finally的执行顺序
一,首先 final,finally和finalize的区别:1.final 1)final修饰类,不能被继承。 2)修饰方法,不能被重写或覆盖。而且final方法是静态绑定的,在编译时就确定好是哪个类的方法,所以final方法效率要高。 3)修饰变量,只能赋值一次。 当final修饰一个基本数据类型时,表示该基本数据类型的值一旦在初始化后便不...原创 2019-01-09 23:05:56 · 392 阅读 · 0 评论 -
static
静态变量在定义一个类时,只是描述某类事物的特征和行为,并没有产生具体的数据。只有通过new关键字创建创建该对象的实例后,系统才会给每个对象分配空间,存储各自的数据但有时候,我们希望某些特定的数据在内存中只有一份,而且能够被一个类的所有实例对象共享静态变量被所有实例所共享,可以使用“类名.变量名”来访问注意:static只能修饰成员变量,而不能修饰局部变量:public clas...原创 2019-01-15 14:47:45 · 236 阅读 · 0 评论 -
封装;构造方法;
封装:将类中的属性私有化,可用使用private来修饰,私有属性只能在所在类中被访问 构造方法:1)同名2)无返回值类型3)方法内无return4)通常用public注意:在java中,每个类都要有构造方法,若没有的话,系统自动创建一个默认的无参构造方法,方法内无任何代码。...原创 2019-01-15 23:10:59 · 279 阅读 · 0 评论 -
继承、重写、super
继承extends,子类自动拥有父类的所有可继承的属性和方法。只支持单继承,不可多重继承,如:extends A,B()是错误的。可以多层继承。重写子类重写父类的方法时,不能使用比父类中被重写的方法更严格的访问权限。super1)调用父类成员变量、成员方法:super.成员变量;super.成员方法;2)调用父类的构造方法;super();//注意:此行必须...原创 2019-02-16 14:41:43 · 170 阅读 · 0 评论 -
包装类
将基本数据类型的值包装为引用数据类型的对象,此过程为装箱,逆之为拆箱。除了Integer和Character类以后,其它六个类的类名和基本数据类型一直,只是类名的第一个字母大写即可:boolean —> Booleanchar —> Characterbyte —> Byteshort —> Shortlong —> Longint —> In...原创 2019-02-18 15:48:12 · 104 阅读 · 0 评论 -
抽象类 接口
抽象类abstract class Animal { //抽象方法 abstract int shout(); //抽象方法}抽象方法不可被实例化,需要创建一个子类,在子类中将抽象类的抽象方法实现接口所有方法都是抽象的抽象类叫做接口//接口interface Animal { int ID = 10; //接口中定义的属性默认使用public stati...原创 2019-02-18 16:58:58 · 117 阅读 · 0 评论 -
内部类、多态、访问控制
目录内部类(成员内部类、静态内部类、方法内部类)多态(概述、对象类型转换、匿名内部类)访问控制内部类(成员内部类、静态内部类、方法内部类)多态(概述、对象类型转换、匿名内部类)访问控制...原创 2019-02-19 17:31:43 · 230 阅读 · 0 评论 -
random()
java中存在两个随机函数,它们分别来自 java.long.Math.random() 和 java.util.Random()其中前者的适用范围比较小,完全可以被后者取代。java.lang.Math.random() public static double random(); 此方法是一个无参,double类型返回值的公开静态方法。 返回一个大于0的double类...原创 2019-03-03 19:19:49 · 5050 阅读 · 0 评论 -
@Override、
@Override:@Override是Java5的元数据,自动加上去的一个标志,告诉你说下面这个方法是从父类/接口 继承过来的。编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错 ,比如你如果没写@Override而你下面的方法名又写错了,这时你的编译器是可以通过的,它以为这个方法是你的子类中自己增加的方法,使用该标记是为了增强程序在编译时候的检查,如果该方...原创 2019-03-15 11:39:53 · 2200 阅读 · 0 评论 -
对象的序列化和反序列化
之前的一篇,有点绕原创 2019-03-17 10:42:50 · 148 阅读 · 0 评论 -
异常
java中的异常类都继承自java.lang.Throwable。java.lang无需导入。异常是Exception。Throwable常用方法: String getMessage() //返回详细信息 void printStackTrace() // void printStackTrace(PrintStream s) //输出到指定输出流...原创 2019-01-09 10:20:18 · 188 阅读 · 0 评论 -
this
this是一个对象,它代表调用这个函数的对象。面向对象的语法,都要按照 类名.变量(函数) 的格式,即每个变量或函数都必须属于某一个实际的对象而不是一个类(static除外)。1. this访问类的成员变量,解决与局部变量名称冲突的问题: class Person { int age; public Person(int age) { this.age = age; }...原创 2019-01-09 09:52:25 · 154 阅读 · 0 评论 -
String,StringBuffer 和 StringBuilder
String,StringBuffer 和 StringBuilder都位于lang包String:初始化:1. String str = "abc"; //因为String类比较常用,所以提供了此简化的方法。2. 使用String的构造方法:String(),String(char[] value),String(String value)常用方法:(文档)长度:str...原创 2019-01-10 00:34:50 · 127 阅读 · 0 评论 -
java输入;java参数传递;
java输入1. 常用方法: Scanner sc = new Scanner(System.in); 1)String name = sc.next(); //接收String类型,以空格结束 2)String name = sc.nextLine(); //接收String类型,以回车结束 3)int n...原创 2019-01-10 20:03:25 · 620 阅读 · 0 评论 -
单例模式(饿汉式/懒汉式)
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。有以下特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 饿汉式就是类一旦加载,就把单例初始化完成,保证getInstance的时候,单例是已经存...原创 2019-01-02 00:33:46 · 235 阅读 · 0 评论 -
抢红包算法
(摘自:程序员小灰) 首先,如果采用"每次抢红包的时候直接随机,随机的上限为剩余金额数"的方法的话,会出现随次数递增而随机金额递减的bug... 正解1:二倍均值法剩余红包金额为M,剩余人数为N,那么有如下公式:每次抢到的金额 = 随机区间 (0, M / N X 2)这个公式,保证了每次随机金额的平均值是相等的,不会因为抢红包的先后顺序而造成不公平。举个栗子:...原创 2018-04-24 13:55:40 · 1872 阅读 · 1 评论 -
Java的序列化机制
可以看这篇.serialVersionUID适用于Java的序列化机制。简单来说,Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常,即是In...原创 2018-04-17 23:04:03 · 753 阅读 · 0 评论 -
switch
别忘 breakswitch(week) { //int week case 1: System.out.println("Monday"); break; //// case 2: System.out.println("Tuesday"); break; //// ... default: System.out.println("输入错误"); break; ...原创 2019-01-15 14:06:53 · 147 阅读 · 0 评论 -
变量
变量的分类: 局部变量、成员变量、静态变量的区别 类型 声明位置 从属于 生命周期 局部变量 方法或语句块内部 方法/语句块 从声明位置开始,直到方法或语句块执行完毕,局部变量消失 成员变量 (实例变量) 类内部,方法外部 对象 对象创建,成员变量也跟着创建。对象消失,成员变量也跟着消失 静...原创 2019-01-09 17:22:36 · 108 阅读 · 0 评论 -
引用
什么是变量:变量的实质是一小块内存单元,这一小块内存里存储着变量的值,比如int a = 1;a即变量名,1即变量的值。 而当变量指向一个对象时,这个变量就被称为引用变量,比如A a =new A();a就是引用变量(a就是引用),它指向了一个A对象,也可以说它引用了一个A对象。我们通过操纵这个a来操作A对象。 此时,变量a的值为它所引用对象的地址。引用数据型在被创建时,首先要在栈上给其引用分配...原创 2019-01-09 23:25:08 · 249 阅读 · 0 评论 -
数据类型
分类:引用数据类型的大小统一为4个字节,记录的是其引用对象的地址。目录分类:整型浮点型类型转换new一个数组整型整型的范围与运行Java代码的机器无关,这正是Java程序具有很强移植能力的原因之一。与此相反,C和C++程序需要针对不同的处理器选择最有效的整型。Java 语言整型常量的四种表示形式: 十进制整数,如:99, -...原创 2019-01-10 00:37:16 · 396 阅读 · 0 评论 -
三目运算符;转义字符;
三目运算符: int score = 80; int x = -100;String type = score > 60 ? "及格" : "不及格"; int flag = x > 0 ? 1 : (x == 0 ? 0 : -1);System.out.println("type= " + type); //输出及格System.out.println("flag...原创 2019-01-10 00:48:44 · 539 阅读 · 0 评论 -
str == null 与 str.length == 0 与 “”.equals(str)
if(str == null || "".equals(null)) 优于 if(str == null || str.equals("")),因为如果str == null 为真,则前者if()中会返回false,后者if()会报空指针异常。""不为null,而是一个字节为0的对象,所以不会抛出异常再有,str != null 优于null != str,因为null!= str永远不会产...原创 2019-01-15 21:25:46 · 1526 阅读 · 0 评论 -
基本类型——传值;引用类型——传引用
1)基本数据类型传值,对形参的修改不会影响实参;2)引用类型(对象或数组)传引用,形参和实参指向同一个内存地址(同一个对象),所以对参数的修改会影响到实际的对象;3)String, Integer, Double等immutable的类型特殊处理,可以理解为传值,最后的操作不会修改实参对象---------------------------------------------------...原创 2019-01-26 13:03:28 · 1602 阅读 · 0 评论