1. 数据类型
    1.1 基本类型

    boolean/1
    byte/8
    char/16
    short/16
    int/32
    float/32
    long/64
    double/64

1.2 包装类型

基本类型都有对应的包装类型,基本类型与包装类型之间的赋值自动使用自动装箱和拆箱完成。
1
2

Integer x = 2; // 装箱
int y = x; // 拆箱

new Integer(123) 与 Integer.valueOf(123) 的区别在于:

new Integer(123) 每次都会新建一个对象;
Integer.valueOf(123) 会使用缓存池中的对象,多次调用会取得同一个对象的引用。编译器会在自动装箱过程调用 valueOf() 方法,因此多个Integer实例使用自动装箱来创建并且值相同,那么就会引用相同的对象。实现就是先判断值是否在缓存池中,如果在的话就直接返回缓存池的内容,如果不在则放入缓存池中。
在 Java 8 中,Integer 缓存池的大小默认为 -128\~127。 

Integer x = new Integer(123);
Integer y = new Integer(123);
System.out.println(x == y); // false
Integer z = Integer.valueOf(123);
Integer k = Integer.valueOf(123);
System.out.println(z == k); // true
static final int low = -128;
static final int high;
static final Integer cache[];

static {
// high value may be configured by property
int h = 127;
String integerCacheHighPropValue =
sun.misc.VM.getSavedProperty(“java.lang.Integer.IntegerCache.high”);
if (integerCacheHighPropValue != null) {
try {
int i = parseInt(integerCacheHighPropValue);
i = Math.max(i, 127);
// Maximum array size is Integer.MAX_VALUE
h = Math.min(i, Integer.MAX_VALUE - (-low) -1);
} catch( NumberFormatException nfe) {
// If the property cannot be parsed into an int, ignore it.
}
}
high = h;

cache = new Integer[(high - low) + 1];
int j = low;
for(int k = 0; k < cache.length; k++)cache[k] = new Integer(j++);
// range [-128, 127] must be interned (JLS7 5.1.7)
assert IntegerCache.high >= 127;

}
1.3 String类型

内部使用 char 数组存储数据,该数组被声明为final,数组初始化之后就不能再引用其它数组,并且 String 内部没有改变 value 数组的方法,因此可以保证 String 不可变。

public final class String
implements java.io.Serializable, Comparable, CharSequence {
/** The value is used for character storage. */
private final char value[];
1.3.1 不可变的好处

1)String Pool的需要

如果一个 String 对象已经被创建过了,那么就会从String Pool中取得引用。只有 String 是不可变的,才可能使用 String Pool。

2)安全性

String 经常作为参数,String 不可变性可以保证参数不可变。例如在作为网络连接参数的情况下如果 String 是可变的,那么在网络连接过程中,String 被改变,改变 String 对象的那一方以为现在连接的是其它主机,而实际情况却不一定是。

3)线程安全

String 不可变性天生具备线程安全。

1.3.2 String, StringBuffer and StringBuilder

1)可变性

String 不可变
StringBuffer 和 StringBuilder 可变 

2)线程安全

String 不可变,因此是线程安全的
StringBuilder 不是线程安全的
StringBuffer 是线程安全的,内部使用 synchronized 进行同步 

3)重载“+”和StringBuilder

Java中只有“+”和“+=”为重载过的操作符,重载过的“+”在进行字符串拼接时,都会创建StringBuilder,并使用StringBuilder的append方法,最后调用toString生成结果,并存为String类型。StringBuilder只会有一个对象,还可以预先指定其大小,这样可以避免多次重新分配缓冲(拼接一次重新分配一次)。
1.3.3 String Pool 与 String.intern()

String Pool是字符串常量池,存放着所有字面量,是JVM常量池中的一种(类文件常量池、全局字符串常量池、运行时常量池),不同版本jdk的字符串常量池的位置是不一致的:

jdk1.6版本的字符串常量池在永久代中,所以在编译期创建字符串常量时常量池存放的就是直接的字符串对象。
jdk1.7以及以上版本的字符串常量池移动到了heap区,所以在创建字符串常量时常量池存放的是堆中字符串对象的引用 

在这样的背景下,字符串的本地方法intern:

jdk1.6会从字符串常量池中查询当前字符串是否存在,若不存在就会将当前字符串放入常量池中,存在则返回引用。
jdk1.7,若不存在就会将当前字符串引用放入常量池中,存在则返回引用。 

public static void main(String[] args) {
String s = new String(“1”);
s.intern();
String s2 = “1”;
System.out.println(s == s2);

String s3 = new String("1") + new String("1");
s3.intern();
String s4 = "11";
System.out.println(s3 == s4);

}
jdk6下false false
jdk7下false true

分析:
第1题jdk6:

new String("1")一共会创建两个字符串对象(前提是 String Pool 中还没有 "1" 字符串对象)。
"1" 属于字符串字面量,因此编译时期会在 String Pool 中创建一个字符串对象,指向这个 "1" 字符串字面量;
而使用 new 的方式会在堆中创建一个字符串对象。
s.intern()方法会将s的字符串值在String Pool中查询,因为已经存在该字符串对象,故无任何作用
s2="1"也拿去查询String Pool,因为字符串"1"已经存在,所以s2得到的对象是String Pool中的对象
s的值是heap的对象引用,s2的值为String Pool中的对象引用,二者不一致故为false 

第2题jdk7:

由于jdk7的String Pool在heap中,存放的是引用。s3创建完后,String Pool中无"11"的字符串对象引用
s3.intern将s3的对象引用存放到String Pool中
s4查询String Pool返回s3的对象引用,故二者引用相同 
  1. 运算
    2.1 参数传递

Java 的参数是以值传递的形式传入方法中,而不是引用传递。

一个实例化引用是一个指针,存储的是对象的地址。在将一个参数传入一个方法时,本质上是将对象的地址以值的方式传递到形参中,因此在方法中使指针引用其它对象,那么这两个指针此时指向的是完全不同的对象,在一方改变其所指向对象的内容时对另一方没有影响;而在方法中对该指针引用的对象内容进行更改的话,则指向的对象的内容发生改变。
2.2 基本运算符

赋值运算符
算术运算符
关系操作符
逻辑操作符
按位操作符按位与(&)按位或(|)按位异或(^)按位非 
移位操作符(移位大于等于其位数时,应该对其取余)有符号左移操作符<<(右边补全0;左边看移位后的结果)有符号右移操作符>>(左边补1或0看原符号位,为1补全1,为0补全0;右边看移位后的结果)无符号右移操作符>>>(左边补全0;右边看移位后的结果) 
三元操作符 

2.3 直接常量

1)直接常量的标志类型

后缀大写的L表示long,D表示double,八进制数以前缀0后面跟随0-9来表示,十六进制数以前缀0x后面跟随0-9或小写来表示。

字面量1.1是属于double类型,不能将1.1直接赋值给float常量,编译器通常把指数作为双精度处理,所以必须要在尾部加f,因为这是向下转型(精度高到精度低),1.1f直接常量才是float类型。

2)指数记数法

e代表10的幂次,1.39e-43f表示1.39乘于10的-43次方
2.4 类型转换操作符

Long l = (long)r;如果是不同类型的则需要响应的方法来:Integer.valueOf()和String.valueOf();
布尔型不能和任何数据类型相互转换;
在对基本数据类型算术时,只要类型比int小都会隐式地自动将这些值转换为int,并且不能隐式地将int向下转型为short精度小的数据类型,但是使用+=或++可以执行隐式类型转换 
  1. 访问权限修饰符、static关键字、final关键字
    3.1 访问权限修饰符

访问权限修饰词有public、protected、default、private,类或类中的成员(字段以及方法)加上访问修饰符,修饰类的只能是public或default(内部类除外)。

图片说明
3.2 final关键字

1)修饰数据

声明数据为常量,可以是编译时常量,也可以是在运行时被初始化后不能被改变的常量。但是,如果是随机生成的值赋予final修饰的数据时,那么就会在运行时确定,而不是在编译期。

对于基本类型,final 使数值不变;
对于引用类型,final 使引用不变,也就不能引用其它对象,但是被引用的对象本身是可以修改的。 

final int x = 1;
// x = 2; // cannot assign value to final variable ‘x’
final A y = new A();
y.a = 1;

2)修饰方法

声明方法不能被子类重写。

private 方法隐式地被指定为 final,如果在子类中定义的方法和基类中的一个 private 方法签名相同,此时子类的方法不是重写基类方法,而是在子类中定义了一个新的方法。

3)修饰类

声明类不允许被继承,由于final修饰的类表明不能被继承,所以里面所有的成员变量和方法都隐式指定为final的。
3.3 static关键字

1)静态变量

静态变量:又称为类变量,也就是说这个变量属于类的,类所有的实例都共享静态变量,可以直接通过类名来访问它。静态变量在内存中只存在一份,存在区域:1.6在方法区,1.7后在heap中。
实例变量:每创建一个实例就会产生一个实例变量,它与该实例同生共死。 

public class A {

private int x;         // 实例变量
private static int y;  // 静态变量public static void main(String[] args) {// int x = A.x;  // Non-static field 'x' cannot be referenced from a static contextA a = new A();int x = a.x;int y = A.y;
}

}

2) 静态方法

静态方法在类加载的时候就存在了,它不依赖于任何实例。

静态方法必须有实现,也就是说它不能是抽象方法。

public abstract class A {
public static void func1(){
}
// public abstract static void func2(); // Illegal combination of modifiers: ‘abstract’ and ‘static’
}

只能访问所属类的静态字段和静态方法,方法中不能有 this 和 super 关键字。

public class A {

private static int x;
private int y;public static void func1(){int a = x;// int b = y;  // Non-static field 'y' cannot be referenced from a static context// int b = this.y;     // 'A.this' cannot be referenced from a static context
}

}

3) 静态语句块

静态语句块在类加载过程中的初始化时运行一次。

public class A {
static {
System.out.println(“1”);
}

public static void main(String[] args) {A a1 = new A();A a2 = new A();
}

}

4) 静态内部类

非静态内部类依赖于外部类的实例,而静态内部类不需要,不能访问外部类的非静态的变量和方法,可以理解为静态方法和变量,是属于类的。

public class OuterClass {

class InnerClass {
}static class StaticInnerClass {
}public static void main(String[] args) {// InnerClass innerClass = new InnerClass(); // 'OuterClass.this' cannot be referenced from a static contextOuterClass outerClass = new OuterClass();InnerClass innerClass = outerClass.new InnerClass();StaticInnerClass staticInnerClass = new StaticInnerClass();
}

}

5) 静态导包

在使用静态变量和方法时不用再指明 ClassName,从而简化代码,但可读性大大降低。
1

import static com.xxx.ClassName.*
4. 对象的初始化和回收
4.1 构造器

该方法是在创建对象时自动调用的特殊方法,通过提供构造器,类的设计者都确定每个对象都会得到初始化。不接受任何参数的构造器叫默认构造器,如果不写默认的构造器那么会自动给他加上一个无参的构造器,只写有参的构造器那么就不会自动加上一个无参的构造器。

this关键字

this关键字只能在方法内部使用,表示对“调用方法的那个对象,即当前对象”的引用。

用法可以是对参数和当前对象的成员加以区分,在调用当前对象的方法的时候编译器会自动在该方法前添加this关键字;还可以是在构造方法中使用,用来调用重载构造方法,即构造方法中又调用当前对象的另外的重载构造方法,比如:this(a)调用参数为a的类型的构造方法。

super关键字

表示基类的对象。

用法是可以使用 super() 函数访问父类的构造函数,从而委托父类完成一些初始化的工作;还可以是如果子类重写了父类的某个方法,可以通过使用 super 关键字来引用父类的方法实现。
4.2 对象的初始化

初始化顺序(父类与子类):

父类静态变量->父类静态代码块->子类静态变量->子类静态代码块->父类成员变量->父类非静态代码块->父类构造方法->子类成员变量->子类非静态代码块->子类构造器

成员变量如果没有给初始值,编译器会自动根据不同的数据类型赋一个默认值;而局部变量必须被初始化,和JVM的类加载机制有关。final修饰的变量,编译器常量必须初始化(可以是初始化块、声明初始化、构造方法初始化)。
4.3 对象的回收

Java的finalize()和C++的析构函数的区别:

Java的finalize在垃圾回收器准备号释放对象占用的存储空间前调用,并在下一次垃圾回收动作发生时才会真正回收对象占用的内存,换句话说只改变状态,而且对象可能因为在程序没有用完存储空间前都不会回收。C++的析构函数在delete对象前调用析构函数来做对象内部的对象内存释放
finalize的作用在于清理本地方法创建的对象
System.gc()用来强制进行终结动作,这个方法只是提醒虚拟机,程序员希望你在这回收一下对象,但回不回收还是虚拟机来决定,也就是说程序员对回不回收没有绝对的控制权。不建议大家反复用System.gc(),最好的解决办法就是把不用的对象设置为null,便于虚拟机作出判断。 

4.4 类的加载和初始化

java采用一种不同于C++的加载方式,每个类的编译代码都在存在于独立的文件中,只有在使用该程序代码时才会被加载,即类的代码在初次使用时被加载。例如:初始化前才加载,加载发生于创建类的第一个对象之时,或访问类的static域或方法时加载。
5. 复用

通过创建新类来复用代码,从而不必重头开始写起。
两种方法:

第一种:只需在新的类中产生现有类的对象,由于新的类是由现有类的对象组成,又叫做组合
第二种:按照现有类的类型来创建新类,无需改变现有类的形式,采用现有类的形式并在其中添加新代码,这种叫做继承 

5.1 组合语法

新类和基类是has-a的关系

在新类中初始化引用的方式:

在定义对象的地方,意味着它们总是能够在构造器被调用之前被初始化(成员变量的地方)。
在类的构造器中。
在setter方法中,即就在正要使用这些对象之前。 

5.2 继承语法

派生类是基类的is-a关系。

1)初始化基类

当创建了一个导出类的对象时,该对象包含了一个基类的子对象。这个子对象与你用基类直接创建的对象是一样的,二者区别是后者来自于外部,而基类的子对象被包装在导出类对象内部。

初始化基类无参构造器(super())

如果基类只有无参构造器(没有显式也会默认添加),那么会默认在派生类的构造器最开头中插入对基类构造器的隐式调用。所以基类的构造器比派生类要早运行(运行基类构造器时,派生类的成员均未初始化)。

带参数的构造器(super(…))

如果基类有有参构造器,而又没有显式无参构造器,那么必须在派生类的构造器最开头显式插入对基类有参构造器的调用,不然会提示基类没有无参构造器而报错。

2)继承注意事项

对于普通方法普通成员变量均正常继承
对于基类的静态方法和静态域都会继承,但是会被隐藏,只能通过基类来调用静态方法和域,派生类可以有和基类一样的静态方法,但是二者均无关系(不是重写的关系),与各自类有关。
对于基类的final、private方法和域都不能继承 

5.3 代理

组合和继承的中庸之道。委托类和代理类继承同一个抽象类,将委托类对象注入代理类,并由代理类调用该对象的所有方法,这样就可以在代理类中动态扩展委托类的功能或改变行为。
5.4 重写与重载

重写(Override)

存在于继承体系中,指子类实现了一个与父类在方法声明上完全相同的一个方法。
为了满足里式替换原则,重写有有以下三个限制:

子类方法的访问权限必须大于等于父类方法。
子类方法的返回类型必须是父类方法返回类型或为其子类型。
派生类只能抛出在基类方法的异常说明里列出的那些异常,或抛出的异常是基类说明的异常的派生类。 

重载(Overload)

存在于同一个类中,指一个方法与已经存在的方法名称上相同,但是参数类型、个数、顺序至少有一个不同。

应该注意的是,返回值不同,其它都相同不算是重载。 如果Java的基类拥有多个重载方法,那么派生类也有该方法的重载方法,派生类不会屏蔽基类的重载方法,重载机制仍然工作。
5.5 Object通用方法

所有类默认继承Object超类,并继承其通用方法。

public native int hashCode()

public boolean equals(Object obj)

protected native Object clone() throws CloneNotSupportedException

public String toString()

public final native Class<?> getClass()

protected void finalize() throws Throwable {}

public final native void notify()

public final native void notifyAll()

public final native void wait(long timeout) throws InterruptedException

public final void wait(long timeout, int nanos) throws InterruptedException

public final void wait() throws InterruptedException
5.6.1 equals()

1)等价关系

自反性
1

x.equals(x); // true

对称性
1

x.equals(y) == y.equals(x); // true

传递性
1
2

if (x.equals(y) && y.equals(z))
x.equals(z); // true;

一致性

多次调用 equals() 方法结果不变
1

x.equals(y) == x.equals(y); // true

与 null 的比较

对任何不是 null 的对象 x 调用 x.equals(null) 结果都为 false
1

x.equals(null); // false;

2)等价与相等

对于基本类型,== 判断两个值是否相等,基本类型没有 equals() 方法。
对于引用类型,== 判断两个变量是否引用同一个对象,而 equals() 判断引用的对象是否等价。 

Integer x = new Integer(1);
Integer y = new Integer(1);
System.out.println(x.equals(y)); // true
System.out.println(x == y); // false

3)实现

检查对象参数是否为空,是则返回false;
检查是否为同一个对象的引用,如果是直接返回 true;
检查是否是同一个类型,如果不是,直接返回 false;
将 Object 对象进行转型,判断每个关键域是否相等。 

public class EqualExample {

private int x;
private int y;
private int z;public EqualExample(int x, int y, int z) {this.x = x;this.y = y;this.z = z;
}<a href="/profile/992988" data-card-uid="992988" class="js-nc-card" target="_blank">@Override
public boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;EqualExample that = (EqualExample) o;if (x != that.x) return false;if (y != that.y) return false;return z == that.z;
}

}
5.6.2 hashCode()

hashCode() 返回散列值,而 equals() 是用来判断两个对象是否等价。

等价的两个对象散列值一定相同,但是散列值相同的两个对象不一定等价;不等价的两个对象散列值不一定不相同,散列值不同的两个对象肯定不等价。

1)必要性

在覆盖 equals() 方法时应当总是覆盖 hashCode() 方法,覆盖的hashCode方法和equals所比较的对象有很大的联系保证等价的两个对象散列值也相等。下面的代码中,新建了两个等价的对象,并将它们添加到 HashSet 中。我们希望将这两个对象当成一样的,只在集合中添加一个对象,但是因为 EqualExample 没有实现 hasCode() 方法,因此这两个对象的散列值是不同的,最终导致集合添加了两个等价的对象。

EqualExample e1 = new EqualExample(1, 1, 1);
EqualExample e2 = new EqualExample(1, 1, 1);
System.out.println(e1.equals(e2)); // true
HashSet set = new HashSet<>();
set.add(e1);
set.add(e2);
System.out.println(set.size()); // 2

2)实现

理想的散列函数应当具有均匀性,即不相等的对象应当均匀分布到所有可能的散列值上。这就要求了散列函数要把所有域的值都考虑进来。可以将每个域都当成 R 进制的某一位,然后组成一个 R 进制的整数。R 一般取 31,因为它是一个素数,如果是偶数的话,当出现乘法溢出,信息就会丢失,因为与 2 相乘相当于向左移一位。

一个数与 31 相乘可以转换成移位和减法:31*x == (x<<5)-x,编译器会自动进行这个优化。

@Override
public int hashCode() {
int result = 17;
result = 31 * result + x;
result = 31 * result + y;
result = 31 * result + z;
return result;
}

5.6.3 toString()

默认返回 ToStringExample

后面的数值为散列码的无符号十六进制表示。

public class ToStringExample {

private int number;public ToStringExample(int number) {this.number = number;
}

}
1
2

ToStringExample example = new ToStringExample(123);
System.out.println(example.toString());
1

ToStringExample@4554617c
5.6.4 clone()

1)cloneable

clone() 是 Object 的 protected 方法,它不是 public,一个类不显式去重写 clone(),其它类就不能直接去调用该类实例的 clone() 方法。重写需要实现 Cloneable 接口,Cloneable 接口只是规定,如果一个类没有实现 Cloneable 接口又调用了 clone() 方法,就会抛出 CloneNotSupportedException。

重写 clone() 得到以下实现:

public class CloneExample implements Cloneable {
private int a;
private int b;

<a href="/profile/992988" data-card-uid="992988" class="js-nc-card" target="_blank">@Override
public Object clone() throws CloneNotSupportedException {return super.clone();
}

}

  1. 直接拷贝

直接赋值。在Java中,A a1 = a2,我们需要理解的是这实际上复制的是引用,也就是 说a1和a2指向的是同一个对象。因此,当a1变化的时候,a2 里面的成员变量也会跟 着变化。

3)浅拷贝(复制引用但不复制引用的对象)

创建一个新对象,复制引用但不复制引用的对象。因此,原始对象及其副本引用同一个对象。

public class ShallowCloneExample implements Cloneable {

private int[] arr;public ShallowCloneExample() {arr = new int[10];for (int i = 0; i < arr.length; i++) {arr[i] = i;}
}public void set(int index, int value) {arr[index] = value;
}public int get(int index) {return arr[index];
}<a href="/profile/992988" data-card-uid="992988" class="js-nc-card" target="_blank">@Override
protected ShallowCloneExample clone() throws CloneNotSupportedException {return (ShallowCloneExample) super.clone();
}

}

ShallowCloneExample e1 = new ShallowCloneExample();
ShallowCloneExample e2 = null;
try {
e2 = e1.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
e1.set(2, 222);
System.out.println(e2.get(2)); // 222

4)深拷贝

深拷贝不仅复制对象本身,而且复制对象包含的引用指向的所有对象。

public class DeepCloneExample implements Cloneable {

private int[] arr;public DeepCloneExample() {arr = new int[10];for (int i = 0; i < arr.length; i++) {arr[i] = i;}
}public void set(int index, int value) {arr[index] = value;
}public int get(int index) {return arr[index];
}<a href="/profile/992988" data-card-uid="992988" class="js-nc-card" target="_blank">@Override
protected DeepCloneExample clone() throws CloneNotSupportedException {DeepCloneExample result = (DeepCloneExample) super.clone();result.arr = new int[arr.length];for (int i = 0; i < arr.length; i++) {result.arr[i] = arr[i];}return result;
}

}

DeepCloneExample e1 = new DeepCloneExample();
DeepCloneExample e2 = null;
try {
e2 = e1.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
e1.set(2, 222);
System.out.println(e2.get(2)); // 2

5)clone() 的替代方案

使用 clone() 方法来拷贝一个对象即复杂又有风险,它会抛出异常,并且还需要类型转换。可以使用拷贝构造函数或者拷贝工厂来拷贝一个对象。

public class CloneConstructorExample {

private int[] arr;public CloneConstructorExample() {arr = new int[10];for (int i = 0; i < arr.length; i++) {arr[i] = i;}
}public CloneConstructorExample(CloneConstructorExample original) {arr = new int[original.arr.length];for (int i = 0; i < original.arr.length; i++) {arr[i] = original.arr[i];}
}public void set(int index, int value) {arr[index] = value;
}public int get(int index) {return arr[index];
}

}

CloneConstructorExample e1 = new CloneConstructorExample();
CloneConstructorExample e2 = new CloneConstructorExample(e1);
e1.set(2, 222);
System.out.println(e2.get(2)); // 2
6. 多态

多态指对象的多种形态,将接口和实现分离开来,消除类型之间的耦合关系,创建可扩展的程序,无论在项目最初创建时还是在需要添加新功能时都可以“生长”的程序。

多态有编译时多态和运行时多态,编译时多态指方法重载,运行时多态指对象的向上转型和向下转型。
6.1 向上转型
1

Wind a = new Wind() ; Instrucmet b = a

这种将基类的引用指向派生类的对象,称之为向上转型。在向上转型的过程中,总是从一个较专用类型向较通用类型转换,符合里氏替换原则,所以是安全可靠不会报错的。

常用方法是在一个方法中参数为基类,根据传入的子类来实现不同的行为。
6.2 方法调用绑定

一个方法的调用与方法所在的类关联起来称为绑定。若在程序执行前进行绑定(编译器确定),叫做前期绑定;若在程序运行时根据对象的类型进行绑定,叫做动态绑定,向上转型中识别传进来的引用并调用相应的方法是根据动态绑定来的。

Java中除了static方法和final方法(private方法属于final方法)之外,其它所有的方法都是动态绑定,自动发生。
6.3 缺陷

1)丢失派生类方法

向上转型时,如果派生类出现的方法在基类中未有,那么向上转型后的引用就不能掉用该方法,如果派生类重写基类的方法,那么引用调用的方法会是派生类的。

2)“覆盖”私有方法

因为private方法被自动认为是final方法,而且对导出类是屏蔽的,虽然可以在派生类中写同名的方法,但这不是覆盖方法,而是和基类完全不一样的同名方法。
如果向上转型,那么就会调用基类的private方法。

3)域和静态方法

只有普通的方法调用可以是多态的,任何域访问操作都将被编译器解析,因此不是多态的,如果某个方法是静态的,它的行为就不具有多态性。
总的来说,派生类覆盖基类的静态方法和域,在向上转型调用时只会调用基类的域和静态方法。
7. 异常处理

用强制规定的形式来消除错误处理过程中随心所欲的因素,从而避免在构建大型、健壮、可维护的程序中造成困难,便引入了异常处理。

图片说明

Error用来表示编译时和系统错误(不关心);
Exception是可以被抛出的基本类型已检查异常(非运行时异常),把异常传递给控制台(通过异常声明直接将异常抛出到上一级:控制台),把受检查异常转换为非检查异常(包装后抛出,可以通过getCause()来获取原始异常)非检查异常(运行时异常),不捕获运行时异常,它就会穿越所有的执行路径直达main方法,在程序退出前,将调用异常的printStackTrace方法将错误信息传给System.err。 

7.1 异常说明

Java希望把方法可能抛出的异常告知使用此方法的人,使得调用者可以清楚知道此方法可能存在的异常并加以捕获,其语法是在指定的方法后面加上throws <异常类别>。
可以声明方法将抛出异常,实际上不抛出,这样做的好处是:为异常占位,以后可以抛出异常而不用修改已有的代码,在定义抽象类和接口很有用,这样派生类和接口实现就能够抛出预先声明的异常。
7.2 抛出异常

异常情形是指阻止当前方法或作用域继续执行的问题,抛出异常有两种方式:
一段程序有可能会出错并隐式地抛出异常,也可以显式用关键字throw抛出异常,程序执行被终止,并由异常处理机制接管程序进行恢复或处理。

在抛出异常时(用new在堆上创建异常对象),此时也伴随这存储空间地分配和构造器的调用,其中一个含参构造器以字符串作为参数,把相关信息放入异常对象的构造器。
7.3 捕获和处理异常

1)try块

如果在方法内部抛出异常,或者在方法内部调用的其它方法抛出了异常(交给上一级,即本方法处理),这个方法将在抛出异常的过程中结束,捕获异常的区域用try块。

2)catch块

抛出异常在某处得到处理,该处是异常处理程序,异常处理程序紧跟在try块后,以catch表示,catch的参数是异常对象。
抛出异常的时候,异常处理系统会按照代码的书写顺序找出最近的处理程序,找到后便不再继续寻找。查找的时候并不要求抛出的异常同处理程序所声明的异常完全匹配,派生类的对象也可以匹配基类的处理程序。

3)finally

finally子句,无论程序发生了什么都会被调用。
当要把除内存之外的资源恢复到它们的初始状态时,就要用到finally,资源包括:已经打开的文件或网络连接,屏幕画的图像等。

在return中使用finally子句:

当try语句里有return语句,finally语句中有修改return参数的语句时,在try语句遇到return语句返回,在真正返回之前会执行finally子句,此时修改其返回参数无济于事。
当try语句里有return语句,finally语句中也有return的语句,finally将会替代try语句中return的值。
try里有return,finally里没有,正常顺序执行。 

异常丢失的情况:

如果在finally里抛出异常将会覆盖try或catch子句中抛出的异常。
7.4 自定义异常

要创建自己的异常类,则必须从已有的异常类继承。
可以使用util的logging工具将异常输出记录到日志。
7.5 异常链

  1. Exception方法

获取异常信息的:

String getMessage()
String getLocalizedMessage()
String toString()

调用栈轨迹,从下至上,把你带到异常抛出地点:

void printStackTrace() --输出到标准错误流(System.err)
void printStackTrace(PrintStream)
void printStackTrace(PrintWriter)
void fillInStackTrace() --用于重新抛出错误或异常,轨迹是重新抛出的位置开始

2)异常链

在捕获一个异常后,将其包装在要重新抛出的异常中并抛出,并且希望把原始异常的信息保存下来,这样称为异常链。

Throwable的子类在构造器都可以接受一个cause对象作为参数,这个对象参数就是用来表示原始异常,这样通过把原始异常传递给新的异常,这样即便重新抛出新的异常也不会丢失原始信息。在Throwable的子类中,只有三种基本的异常提供这样的构造器,是Error、Exception、RuntimeException,其它类型异常(包括自定义异常),就应该使用initCause()
方法而不是构造器,即在throw新的异常前,先调用新异常的initCause方法,参数就是原异常对象。

重写抛出后,printStackTrace方法显示的是原来异常的栈轨迹,如果要更新为重新抛出点开始的信息,那么就要在抛出点调用fillInStackTrace方法:
1

throw (Exception)e.fillInStackTrace()。
8. 内部类

将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。包括这四种:成员内部类、局部内部类、匿名内部类和静态内部类。
8.1 成员内部类

成员内部类是最普通的内部类,它的定义为位于另一个类的内部
class Circle {
double radius = 0;

public Circle(double radius) {this.radius = radius;
}class Draw { //内部类public void drawSahpe() {System.out.println("drawshape");}
}

}

1)访问外部类

成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括private成员和静态成员)。

不过要注意的是,当成员内部类拥有和外部类同名的成员变量或者方法时,会发生隐藏现象,即默认情况下访问的是成员内部类的成员。如果要访问外部类的同名成员,需要以下面的形式进行访问:

外部类.this.成员变量
外部类.this.成员方法

class Circle {
private double radius = 0;

public Circle(double radius) {this.radius = radius;getDrawInstance().drawSahpe(); //必须先创建成员内部类的对象,再进行访问
}private Draw getDrawInstance() {return new Draw();
}class Draw { //内部类public void drawSahpe() {System.out.println(radius); //外部类的private成员}
}

}

2)访问内部类

在外部类中如果要访问成员内部类的成员,必须先创建一个成员内部类的对象,再通过指向这个对象的引用来访问。

public class Test {
public static void main(String[] args) {
//第一种方式:
Outter outter = new Outter();
Outter.Inner inner = outter.new Inner(); //必须通过Outter对象来创建

    //第二种方式:Outter.Inner inner1 = outter.getInnerInstance();
}

}

class Outter {
private Inner inner = null;
public Outter() {

}public Inner getInnerInstance() {if(inner == null)inner = new Inner();return inner;
}class Inner {public Inner() {}
}

}

3)访问权限

内部类可以拥有private访问权限、protected访问权限、public访问权限及包访问权限。

如果成员内部类Inner用private修饰,则只能在外部类的内部访问,如果用public修饰,则任何地方都能访问;
如果用protected修饰,则只能在同一个包下或者继承外部类的情况下访问;
如果是默认访问权限,则只能在同一个包下访问。这一点和外部类有一点不一样,外部类只能被public和包访问两种权限修饰。 

8.2 局部内部类

局部内部类是定义在一个方法或者一个作用域里面的类。

class People{
public People() {
}
}
class Man{
public Man(){
}
public People getWoman(){
class Woman extends People{ //局部内部类
int age =0;
}
return new Woman();
}
}

它和成员内部类的区别在于局部内部类的访问仅限于方法内或者该作用域内;局部内部类就像是方法里面的一个局部变量一样,是不能有public、protected、private以及static修饰符的。
8.3 匿名内部类

匿名内部类应该是平时我们编写代码时用得最多的,在编写事件监听的代码时使用匿名内部类不但方便,而且使代码更加容易维护吗,jdk1.8常用lambda代替内部类。

scan_bt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub

        }});history_bt.setOnClickListener(new OnClickListener() {</a><a href="/profile/992988" data-card-uid="992988" class="js-nc-card" target="_blank">@Overridepublic void onClick(View v) {// TODO Auto-generated method stub}});</a>

代码中需要给按钮设置***对象,使用匿名内部类能够在实现父类或者接口中的方法情况下同时产生一个相应的对象,但是前提是这个父类或者接口必须存在才能这样使用。
8.4 静态内部类

静态内部类也是定义在另一个类里面的类,相当于成员内部类的多了static修饰词。

public class Test {
public static void main(String[] args) {
Outter.Inner inner = new Outter.Inner();
}
}
class Outter {
public Outter() {
}
static class Inner {
public Inner() {
}
}
}

静态内部类是不需要依赖于外部类的,这点和类的静态成员属性有点类似,并且它不能使用外部类的非static成员变量或者方法。

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 关于《基于eclipse的android项目实战—博学谷》的问题,为了这个差点疯了

    前面都是废话,想要干的直接点我你就对了《基于eclipse的android项目实战—博学谷》这篇文章已经一个星期没有更新了,原因是后面出了些问题,然后我花了整整一个星期才解决。 《基于eclipse的android项目实战—博学谷》是我参考资料:《android项目实战——博学谷》(黑马程序…...

    2024/4/17 4:02:00
  2. 基于SpringBoot的注解式请求合并

    基于SpringBoot的注解式请求合并 某一天突然想到之前写过一个请求合并的代码,但是代码嵌入太强,就想自己写一个请求合并的注解,但是好像网上的相关代码较少,就去找到了Hystrix的请求合并相关资料,但是这代码可不是我所能看懂的。真是太难懂了,抓绕。 以下注解写的不是很全…...

    2024/4/25 8:01:16
  3. 环保监管中餐饮油烟在线监测系统的应用

    摘要:文章分析了餐饮油烟污染的危害,介绍了油烟净化设备实时监控系统的功能、特点及优势;通过应用案例,指出该系统可以实时、快捷、广域地进行环境数据监测,提高环保部门的反应能力,对于提高城市环境综合监控能力、改善城市环境质量、建设和谐社会具有重大意义。 关键词:…...

    2024/4/17 4:01:42
  4. redis的安装

    redis安装和配置 1.安装下载安装包 上次课前资料提供的安装包,或者:官网下载 建议上传到我们的home下:/home/leyou/解压tar -xvf redis-4.0.9.tar.gz编译安装mv redis-4.0.9 rediscd redismake && make install2.配置 修改安装目录下的redis.conf文件 vim redis.conf…...

    2024/4/23 15:12:09
  5. 【华为云技术分享】如何拆分用户故事

    提起用户故事拆分,我们听得最多的就是INVEST原则(关于INVEST原则可以参考文章“用户故事等于需求说明”——你一定没有写好用户故事),但很多人面临的问题是拿到一个较大的用户故事时,该如何拆分才能使得它满足Small的原则呢?接下来,就和大家一起讨论一下如何拆分用户故事…...

    2024/4/23 15:12:07
  6. 分布式系统的完整介绍

    文章目录介绍1. 什么是分布式系统2. 为什么需要分布式系统3. 伸缩我们的数据库分布式系统的类别1. 分布式数据存储CAP定理Cassandra共识2. 分布式计算MapReduce更好的技术3. 分布式文件系统HDFSIPFS4. 分布式消息5. 分布式应用Erlang虚拟机BitTorrent一个示例网络6. 分布式分类…...

    2024/4/23 15:12:06
  7. spi液晶显示retropie关键点

    树莓派游戏系统retropie,spi驱动关键点说重点fbcp是关键安装流程走一遍从官网下载安装retropie系统使用ssh登录retropie使用ssh设置retropie使用ssh安装spi驱动使用ssh安装和设置fbcp结束语 说重点fbcp是关键 很多人在安装了LCD-show驱动以后就以为万事大吉,其实不然,当retr…...

    2024/4/23 15:12:06
  8. 大数据分析在医疗行业的作用

    大数据每天都在增长,这让医生们有机会了解更多有关科学、客户服务、服务等方面的知识。下面就是医疗行业从大数据中受益的几种主要方式,也许能给你的业务或者实践带来一些帮助和启发。1、提高治疗成功率现代医学每一年都在发展和改进,而大数据是每一天都在为医生们提供改善。…...

    2024/4/23 15:12:05
  9. 全攻略自制esp8266 WIFI智能排插教程

    前言 其实自己动手制作一个智能排插很容易,看见网上的教程有点乱,所以我决定自己写一篇,只需要你懂一点编程知识,就可以制作自己专属的智能排插。有兴趣的小伙伴可以往下看,下面我会给出代码和需要购买的硬件,和淘宝购买链接,你们也可以买同款的就行 个人觉得自己制作一…...

    2024/4/23 15:12:03
  10. 本科毕设论文如何写(2)-- 优化

    今年参加三个小组的答辩,另外自己带5个学生,已评审、修改了好多篇论文初稿,让人愉悦的不算多,期待同学们的终稿。 本科毕业设计(信息系统)论文如何优化,关键在于抽象和概括。 答辩PPT法 一般同学们会先写完论文,再写答辩PPT。 论文一般一万多字,50页左右,而答辩PPT差…...

    2024/4/23 15:12:03
  11. 利用Maven打包docker镜像上传docker容器

    目录开启docker容器的远程访问配置项目的pom.xml配置项目的Dockerfile打包上传查看镜像 开启docker容器的远程访问#编辑docker配置文件vim /usr/lib/systemd/system/docker.service#修改ExecStart行为下面内容ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/…...

    2024/4/23 15:12:01
  12. python 安装,pycharm安装,tensorflow gpu安装,cuda,cudnn安装

    1.pyhon安装1.1下载链接:https://www.python.org/downloads/windows/ 我先选择了python-3.7.5-amd64注意:如果需要支持tensorflow gpu的,需要安装X64位的Windows x86-64 executable installer1.2安装注意:1.3安装成功2.编辑平台pycharm安装 https://www.jetbrains.com/pyc…...

    2024/4/29 0:17:03
  13. Spring常见面试题总结

    Spring常见面试题总结(超详细回答) 1、Spring是什么? ​ Spring是一个轻量级的IoC和AOP容 器框架。是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求。常见的配置方式有三种:基 于XML的配置、基于注解的配…...

    2024/4/23 15:12:02
  14. 常见漏洞的原理与防御

    一:SQL注入 原理:将SQL语句插入或添加到用户输入的参数种,然后提交到数据库执行。 修复: 1、使用参数化查询 2、对用户输入的特殊字符(单引号、上引号等)进行转义或者编码。 二:XSS 原理:攻击者在网页中插入恶意代码。 危害: 1、盗取用户的Cookie(保存到测试者的服务器…...

    2024/4/23 15:12:05
  15. 5月20日原油早班车:原油比的不是谁赚的多,而是谁活的长。

    原油比的不是谁赚的多,而是谁活的长。 我认为投资中,只有活的够长,才能遇到好的行情,适合交易的行情,而不是像一些交易者,在方向不明时瞎折腾,耗费精力,行情来了却不敢进场,错过机会! 那么方向不明时,应该怎么办,空仓无疑是好选择,当然也可以等好的点位进行“佛系…...

    2024/4/23 15:11:57
  16. Flutter项目——懒大厨

    项目名称: 懒大厨项目已完成,下载可以直接运行看效果 功能 本人练手项目,菜谱类app,前期功能比较较简单,包含以下模块:用户模块:注册、登录、修改密码菜品模块:菜品制作过程展示、检索、上新、收藏技术实现Provider实现组件的状态管理,做到局部刷新 自定义LoadContain…...

    2024/4/23 15:12:04
  17. drop与delete的区别

    drop主要用于删除结构 例如删除数据库:drop database XX,删除表 drop table XX。字段也是结构的一种,也可以使用drop了?对的,但是我们改变了表结构要先alter方法。例如,我们要删除student表上的age字段的信息,可以这样写:alter table student drop age delete主要用于删…...

    2024/4/23 15:12:02
  18. Python数据序列之推导式

    目标列表推导式字典推导式集合推导式一. 列表推导式作用:用一个表达式创建一个有规律的列表或控制一个有规律列表。列表推导式又叫列表生成式。1.1 快速体验需求:创建一个0-10的列表。while循环实现# 1. 准备一个空列表 list1 = []# 2. 书写循环,依次追加数字到空列表list1中…...

    2024/4/23 15:11:55
  19. 动态设置echarts Y轴最大刻度与最小刻度

    动态设置echarts Y轴最大刻度与最小刻度 yAxis: { max: function (value) { return (value.max + 0.01 * (value.min)).toFixed(2); }, min: function (value) { return (value.min - 0.01 * (value.min)).toFixed(2); }, minInterval: 1, splitLine: { show: true }, “axisTi…...

    2024/4/19 12:48:34
  20. yii2 kartik Tree Manager (TreeView) 使用小结与一个坑

    kartik Tree Manager 是作为一个模块提供的,所以,观察其源代码,有模块入口文件 Module.php,widget组件包括了TreeView和TreeViewInput,前者用来展示和管理树形节点,后者是可以树形方式选择节点作为输入。TreeView这个widget,不仅在左边显示树形节点,而且在右边以表单形…...

    2024/4/17 4:02:43

最新文章

  1. C++中的priority_queue模拟实现

    目录 priority_queue模拟实现 priority_queue类定义 priority_queue构造函数 priority_queue类push()函数 priority_queue类pop()函数 priority_queue类size()函数 priority_queue类empty()函数 priority_queue类top()函数 仿函数与priority_queue类模拟实现 仿函数 …...

    2024/5/4 15:08:45
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 腾讯云容器与Serverless的融合:探索《2023技术实践精选集》中的创新实践

    腾讯云容器与Serverless的融合&#xff1a;探索《2023技术实践精选集》中的创新实践 文章目录 腾讯云容器与Serverless的融合&#xff1a;探索《2023技术实践精选集》中的创新实践引言《2023腾讯云容器和函数计算技术实践精选集》整体评价特色亮点分析Serverless与Kubernetes的…...

    2024/5/4 3:47:51
  4. 用Python实现办公自动化(自动化处理PDF文件)

    自动化处理 PDF 文件 目录 自动化处理 PDF 文件 谷歌浏览器 Chrome与浏览器驱动ChromeDriver安装 &#xff08;一&#xff09;批量下载 PDF 文件 1.使用Selenium模块爬取多页内容 2.使用Selenium模块下载PDF文件 3.使用urllib模块来进行网页的下载和保存 4.使用urllib…...

    2024/5/2 18:30:11
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/1 17:30:59
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/2 16:16:39
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/29 2:29:43
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/3 23:10:03
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/30 9:43:09
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/2 15:04:34
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/29 20:46:55
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/30 22:21:04
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/1 4:32:01
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/4 2:59:34
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/30 9:42:22
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/2 9:07:46
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/30 9:42:49
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57