常量(这里的常量指的是实例常量:即成员变量)赋值: ①在初始化的时候通过显式声明赋值.Final int x=3: ②在构造的时候赋值. 局部变量可以随时赋值.   利用final定义方法:这样的方法为一个不可覆盖的方法. Public final void print(){}: 为了保证方法的一致性(即不被改变),可将方法用final定义.   如果在父类中有final定义的方法,那么在子类中继承同一个方法.   如果一个方法前有修饰词private或static,则系统会自动在前面加上f…
1.,中的 Debug Information Format 的选项中选择 DWARF ,平时调试就是用整个选项,经过测试,速度确实有很大的提升,等发行版本的时候在调回 DWARF with dsYM File 选项. 2.…
对于大部分前端开发者而言,new一个构造函数或类得到对应实例,是非常普遍的操作了.下面的例子中分别通过构造函数与class类实现了一个简单的创建实例的过程. // ES5构造函数 let Parent = function (name, age) { this.name = name; this.age = age; }; Parent.prototype.sayName = function () { console.log(this.name); }; const child = new P…
Object类提供的toString()方法如下: public String toString() {    return getClass().getName() + "@" + Integer.toHexString(hashCode()); } 如果我们直接打印一个对象,就会调用这个对象的toString()方法,如果我们没有为该类覆盖toString()方法, 我们可以看出toString()方法,返回的是 "类名@散列值的十六进制". toString(…
前言: 在开发当中,经常会验证用户登录状态和获取用户信息.如果每次都手动调用用户信息查询接口,会非常的繁琐,而且代码冗余.为了提高开发效率,因此就有了今天这篇文章. 思路: 用户请求我们的方法会携带一个Token,通过Filter过滤器将会员信息查出来并放到request请求参数中.接着在Cotroller层的请求方法中接收一个MemberDeatails类型的参数,就能直接获得会员信息了. 详细步骤: 1. Gradle引入需要的Jar包: compile "com.fasterxml.jac…
final方法 1.为了确保某个函数的行为在继承过程中保持不变,并且不能被覆盖(override),可以使用final方法. 2.为了效率上的考虑,将方法声明为final,让编译器对此方法的调用进行优化,要注意的是,编译器会自行对final方法进行判断,并决定是否进行优化.通常在方法的体积很小,而我们确实不希望它被覆盖时,才将它声明为final. 3.class中所有的private和static方法自然就是final. 例如 public final void pubMethod(){} 抽象…
第 19 题(数组.递归):题目:定义 Fibonacci 数列如下:/ 0 n=0f(n)= 1 n=1/ f(n-1)+f(n-2) n=2输入 n,用最快的方法求该数列的第 n 项. 思路:递归和非递归的 下面的代码有个问题,没有考虑大数越界.返回值应该设成long long型的 递归速度非常慢 /* 第 19 题(数组.递归): 题目:定义 Fibonacci 数列如下: / 0 n=0 f(n)= 1 n=1 / f(n-1)+f(n-2) n=2 输入 n,用最快的方法求该数列的第…
package TreeSetTest; import java.util.Iterator; import java.util.TreeSet; import javax.management.RuntimeErrorException; /* 可以对set集合中的元素进行排序,其底层的数据结构是二叉树, 保证元素唯一性的依据是compareTo和return 0; TreeSet排序的第一种方式 让元素自身具备比较性 元素需要实现Comparable接口,覆盖compareTo方法 这种方式…
  工厂方法模式:   定义:为创建对象定义一个接口,让子类决定实例化哪个类.工厂方法让一个类的实例化延迟至子类.   应用场景: 客户类不关心使用哪个具体类,只关心该接口所提供的功能: 创建过程比较复杂,例如需要初始化其他关联的资源类,读取配置文件等: 接口有很多具体实现或者抽象有很多具体子类时,你可能需要为客户代码写一大串 if-else 逻辑来决定运行时使用哪个具体实现或者具体子类: 不希望给客户程序暴露过多此类的内部结构,隐藏这些细节可以降低耦合度: 优化性能,比如缓存大对象或者初始化比…
首先我们要更正一个很熟悉的概念,那就是指针不仅仅是“地址”,指针还有一个很重要的特性,那就是“类型”. 指针初始化时,“=”的右操作数; 除外,该语句表示指针为空): 所以 ; 这样的代码是不允许的.在C++里面直接是error的,即使在一些C编译器中以warning的形式提示,但是warning有的时候也很严重.所以这种东西不要用.从const int到int*是不存在隐士转换的. 正确的使用方法是 ; 这样就先使10这个地址增加一个类型,然后在赋值给int *p.看这句话的汇编: 00401…