《java 宝典》简记

前言:

《java宝典》这本书陪伴我也有三年多了。最近觉得用处不大打算封存了,封存前再看最后一次整理点笔记。

1. jdk 和 jre 区别

简单而言:
JRE,Java Runtime Enviroment,java 运行时环境,面向程序本身,包括 jvm、核心类库,为了运行 .class 而生。
JDK,Java Development Kit,java 开发工具包,面向开发者,包含 jre、java 工具(编译等)、java 标准类库,为了开发程序而生。

2. 8 种基本数据类型
  1. 整型
byte	8bit(1字节)	-128 ~ 127
short	2字节		-32768 ~ 32767
int		4字节		-2*31 ~ 2*31
long	8字节		-2*63 ~ 2*63
  1. 浮点类型
float	4字节	-3.4E38 ~ 3.4E38
double	8字节	-1.7E308 ~ 1.7E308 
  1. 字符类型
char
  1. 逻辑类型
boolean
  1. 其它都是引用数据类型
string
...
3. 运算
+,-,*,/,%(加减乘除、取余)
++,--(自增自减)
+=
==,>=,<=,>,<,!=
逻辑与(&),逻辑或(|),逻辑非(!),条件与(&&),条件或(||)
位运算:&,|,~,^
移位运算:<<(左移,高位左移,右侧补0),>>(右移,正数高位补0,负数高位补1)
条件运算符:a? c:d;
  1. & 和 &&
    &&,如果左边判断为 false,那么后面的就不会再判断,直接返回false,可以加快运算速度
  2. | 和 ||
    ||,如果左边判断为 true,那么后面的就不会再判断,直接返回true,可以加快运算速度
4. 流程
if(){}else{}
------------------------
if(){}else if(){}else{}
------------------------
switch():{
case 1:
	...break;
default:
	...
}
------------------------
while(){
	...;
	}
------------------------
do{
	...
	}while();
------------------------
for(;;){
	...
	}
------------------------
增强for循环
for(:){
	...
	}
------------------------
continue:跳出本次循环
break:退出当前循环
5. 数组
  1. 创建
int[] a = new int[num];
int[] a = {1,2,3};

Arrays 类属于 util 包,跟数组有强相关性

判断相等(相同顺序,相同元素):
Arrsys.equals(数组A,数组B)
-------------------------------------------------------
数据填充:
Arrays.fill(数组,元素)		数组全部填入元素值
Arrays.fill(数组,fromIndex,endIndex,元素)	元素值填入数组下标 fromIndex 到 endIndex(不包括)
--------------------------------------------------------
数组排序:
Arrays.sort(数组)
---------------------------------------------------------
数组复制:
System.arraycopy(Object src,int srcPos,Object dest,int destPos,int legth)
src 源数组,srcPos 源数组起始下标,dest 目标数组,destPos 目标数组起始下标,legth 复制的数量
6. 字符串
  1. 创建
String s = "string";
-----------------------------------
String s = new String("hello");
-----------------------------------
char[] arry = {'a','b','c','d'};
String s = new String(arry);			s = "abcd"
String s = new String(arry,1,3);		s = "bcd"	
  1. 方法
s.length();					长度
------------------------------------------
s1.equals(s2);				值相等
s1 == s2;					字符串地址相等
s1.equalsIgnoreCase(s2);	忽略大小写
-------------------------------------------
s.charAt(i);						获取下标 i 的字符
-------------------------------------------
查不到返回 -1,查到返回下标
s.indexOf(String str)
s.indexOf(char c)
s.indexOf(int ch)ch是字符的阿拉伯对应
s.indexOf(T t, int fromIndex);
s.lastIndexOf();		取值同上
---------------------------------------------
s.contains();			包含
---------------------------------------------
s.startsWith();
s.endsWith()'
---------------------------------------------
s.substring(int begin);				从begin开始
s.substring(int begin,int end);		不包含end
---------------------------------------------
s.replace();
s.replaceAll();
---------------------------------------------
s.toUpperCase();		转大写
s.toLowerCase();		转小写
---------------------------------------------
s.trim();		去首尾全部空格
char[] arr = s.toCharArray();			转换成字符数组
String[] strArr = s.split(regx);		根据正则分割成字符串数组
----------------------------------------------
String s = String.valueOf(T t);			转换成字符串
  1. StringBuilder 和 StringBuffer
StringBuffer sb = new StringBuffer();
sb.charAt(i);
sb.append(T t);
sb.length();		现有长度
sb.capacity();		现有容量
sb.trimToSize();	减少容量
sb.insert(int offset, T t);
sb.reverse();
sb.indexOf(T t),sb.lastIndexOf(T t);
sb.deleteCharAt(i);
sb.delete(int start,int end);
sb.toString();

StringBuilder 和 StringBuffer 区别就是 StringBuffer 线程安全,相关方法加 synchronized 保证安全;
速度:
StringBuilder > StringBuffer > String

  1. 字符串分析类 StringTokenizer
StringTokenizer st = new StringTokenizer("this is a news, are you?",",");
以“,”分割,不传默认以空格分割
int length = st.countTokens();		返回分割的字符串数量
hasMoreTokens();
String s = st.nextToken(); 		配合 hasMoreTokens() 循环取值
  1. 正则

使用样例:

		String regx = "[0-9]+";
        String str = "123456as1243";
        boolean b = str.matches(regx);

        Pattern p = Pattern.compile(regx);
        Matcher m = p.matcher(str);
        while (m.find()){
            System.out.println("q");
            System.out.println(m.group());
        }
7. 对象
  1. 类声明
访问控制符:
public
private			只能被该类本身访问,一般申明为内部类
friendly		该类本身或同包下类访问,默认不带访问控制符就是 friendly
protected		该类、同包下类、不同包下该类子类访问
-------------------------------------------------------------------
注意:除非内部类,一般类不能用 private 和 protected修饰
-------------------------------------------------------------------
关键字:
static
abstract	至少有一个abstract方法;不能被实例化
final		不能被继承
  1. 方法声明
访问控制符:
public
private			只能被该类本身访问
friendly		该类本身或同包下类访问,默认不带访问控制符就是 friendly
protected		该类、同包下类、不同包下该类子类访问
-------------------------------------------------------------------
关键字:
static		该类所有对象共享
abstract	声明方法,没有方法体
final		不能被重写或覆盖
  1. 抽象、继承、封装、多态

抽象:抽取事物共同特征,形成方法和属性对应到程序类。
继承:extends 关键字实现,单一继承
封装:隐藏类的数据,通过方法访问,例如 private 的属性
多态:不同的对象对同一消息做出响应不同,多态分为编译时多态和运行时多态。编译时多态主要指方法的重载,运行时多态指程序中定义的对象引用所指向的具体类型在运行期间才确定。

运行时多态举例:
class Manager extends Employer {
	work();
}

Employer e = new Manager();
e.work();

另:向上转型(Manager转Employer)是安全的;向下转型需要强制(Manager m = (Manager ) e);

重载:方法名一样,传参不同结果不同。

  1. this 和 super 关键字
this 关键字可以引用成员变量
---------------------------------------
public Car getInstance(){
	return this;
	}
this 关键字引用当前对象
---------------------------------------
this(参数表);
eg,根据参数表调用类对应的构造方法
---------------------------------------
super(参数表)			调用父类构造方法
super.方法名(参数表)		调用父类方法
super.成员方法名			调用父类的成员变量
  1. static 关键字

参考 Java静态变量使用实例

  1. final 关键字

被 final 修饰的变量只能被初始化一次,不能被修改
被 final 修饰的方法不能被重写
被 final 修饰的类不能被继承

  1. abstract 抽象
抽象类不能实例化;
如果有抽象方法,类必须是抽象类(没有抽象方法,也可以是抽象类);
继承抽象类必须重写全部抽象方法,非抽象方法可以不重写;
抽象类定义的变量可以被重新赋值;
-------------------------------------------
[访问控制符]  abstract class A{
	int a = 12;
	[访问控制符]  abstract 返回类型 方法名(参数表);
}
  1. interface 接口
接口的方法只有声明没有方法体;
实现接口的类必须实现接口中所有的方法;
类可以实现多个接口(Java 单一继承的弥补);
-----------------------------------------
[访问控制符]  interface A{}
interface A{
	int a = 12;
	void play();
	int add();
}
-------------------------------------------
接口中数据成员全部是 public static final 类型
接口中方法默认全部是 public abstract 类型
-------------------------------------------
接口扩展
interface A extends B,C{}
B,C 均为接口
--------------------------------------------
实现接口
class M implements A{}
  1. 内部类、匿名内部类
    使用较少,不介绍

  2. 克隆技术
    关于克隆,有深浅拷贝的概念,可以参考Java 深浅拷贝和原型模式

8. 集合
  1. Set
Set 继承 Collection 接口,中间不能有重复数据
-----------------------------------------------
HashSet,无序,线程不安全
add()
clear()
contains()
isEmpty()
public Iterator iterator()			返回迭代器
public boolean remove(Object O)
size()
Object[] toArray()
------------------------------------------------
TreeSet,自然排序,线程不安全
public E first()		返回第一个,即最小的
public E last()
-----------------------------------------------
CopyOnWriteArraySet,          线程安全
  1. List
AllayList,线程不安全
boolean add()
boolean addAll(Collection<? extends E> C)
void clear()
contains(Object e)
get(int index)
boolean isEmpty()
public remove(int index)
public set(int index, E e)
int size()
Object[] toArray()
void trimToSize()			容量调整到当前最小
---------------------------------------------------------
Vector 实现了 AbstractList,线程安全,CopyOnWriteArrayList,线程安全
---------------------------------------------------------
Stack 实现了 Vector ,线程安全
pop() 		删除栈顶元素
peek()		取得栈顶元素,不删除
boolean empty()
public int search(Object o)		返回 o 所处的栈位置
  1. Map
    HashMap、HashTable(有些过时,不推荐使用),CurrentHashMap
HashMap:
public void clear()		删除映射关系
boolean containsKey(Object k)
boolean containsValue(Object v)
V get(Object k)
boolean isEmpty()
put(K k,V v)
int size()
remove(Object o)
------------------------------------------------
建议使用下面方式获取 key 和 value

Map<String, String> map = new HashMap<String, String>();
for (Map.Entry<String, String> entry : map.entrySet()) {
    entry.getKey()
}
------------------------------------------------
HashMap 线程不安全;
HashTable 是把 HashMap 方法全部加 synchronized 实现线程安全的,不推荐使用;
CurrentHashMap,线程安全,分组加 synchronized  实现线程安全,推荐使用

想了解跟多可参考 从底层代码看HashMap、Hashtable、ConcurrentHashMap的区别
4.
5. Colletcitons 相关方法

public static void sort(list)							自然排序
public static void sort(List list, Comparato c)			按比较器排序
public static void reverse(List list)
9. 泛型和枚举
  1. 泛型
泛型的使用把原来在运行期间的类型检测提前到了编译期间进行,增强了代码的类型安全。
eg,
List<String> list = new ArrayList<String>();
-------------------------------------------------------------------
定义泛型类和方法举例:

public class Car<K> {
    private K name;
    private K color;

    public Car(K carName, K carColor) {
        this.color = carColor;
        this.name = carName;
    }

    public void setName(K name) {
        this.name = name;
    }

    public void setColor(K color) {
        this.color = color;
    }

    public K getColor() {
        return color;
    }

    public K getName() {
        return name;
    }
}

实例化:
Car<String> car = new Car<String >("", "");
  1. 枚举类
    属于类,拥有类的一些特征,例如访问控制符,
eg,
public enum OrderEnum {

    FROZEN(0, "冻结"),
    ORDER(1, "订购"),
    RECOVERY(2, "恢复");

    private int id;
    private String desc;

    OrderEnum(int id, String desc) {
        this.id = id;
        this.desc = desc;
    }

    public int getId() {
        return id;
    }

    public String getDesc() {
        return desc;
    }
}
使用:
int id = OrderEnum.ORDER.getId()
10. 异常和断言
  1. 异常
Throwable 类是所有错误和异常类的父类,子类有两个 Error 和 Exception 
-----------------------------------------------------------------
几种常见的运行时异常
NullPointerException
IndexOutOfBoundsException
ClassCastException
ArithmeticException
  1. 异常处理方式
catch 可以多加几个捕获多种异常
try{...}catch(Exception e)){...}
try{...}catch(Exception e){...}finally{...}
------------------------------------------------------
尽量使用下面这种方式,方便释放资源
try(...){...}catch(Exception e)){...}
------------------------------------------------------
在方法声明后面抛出异常
throw new Exception
-------------------------------------------------------
  1. 断言
assert 会让系统产生一个AssertionError 的错误,断言失败错误不可恢复
eg,
assert 12 > 10;
11. 多线程

常规的概念和使用参考下述博客:

java 多线程实现的三种方式区别
java中join方法的理解和说明
java 的 synchronized 同步方法使用场景举例解读
java 中 wait 和 notify 线程通信举例说明

12.其它

上述的笔记整理是看到哪想到哪写到哪,有些在《Java宝典》里面没有,有些不涉及后端开发也没写。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 等保2.0标准中对技术安全要求主要包括信息安全类要求(简记为x)、服务保证类要求(简记为s)、其他安全保护类要求(简记为g)和数据设备类要求(简记为f)。 a. 信息安全类要求(x)是等保2.0标准中的一项重要要求,它涉及了信息系统的安全保护、安全管理和信息安全技术的实施要求,包括身份认证、访问控制、审计、加密等内容。 b. 服务保证类要求(s)也是等保2.0标准中的一项重要要求,它主要围绕着信息系统的可用性、可靠性和稳定性进行要求,包括灾备备份、容灾恢复、业务连续性等内容。 c. 其他安全保护类要求(g)是等保2.0标准中的一项综合要求,主要涉及到对软硬件安全配置、网络安全和物理环境安全等方面的要求,包括网络隔离、漏洞修复、环境监控等内容。 d. 数据设备类要求(f)是等保2.0标准中专门对数据安全进行要求的一项内容,它主要包括数据备份、数据恢复、数据存储、数据传输等方面的安全要求。 综上所述,a、b、c、d选项所描述的等保2.0标准中对技术安全要求的分工是正确的。 ### 回答2: 等保2.0标准中对技术安全要求主要包含了信息安全类要求、服务保证类要求、其他安全保护类要求和数据设备类要求。 a. 信息安全类要求指的是对信息系统的各种组成部分、信息传输和处理过程以及相关的信息安全协议、算法等进行安全要求和控制。这是等保2.0标准中非常重要的一部分。 b. 服务保证类要求主要涉及系统的可用性、可靠性、灾备能力、响应能力等方面的要求。这些要求旨在确保信息系统随时可用,并且能够及时处理异常情况。 c. 其他安全保护类要求主要包括物理环境安全、人员安全、网络安全、应用软件安全等方面的要求。这些要求涉及到信息系统运行环境的各个方面和安全管理控制的要求。 d. 数据设备类要求主要涉及到数据的存储、传输、备份、还原等方面的要求。这些要求着重保护重要数据的安全性和完整性。 所以以上说法都正确,它们都是等保2.0标准中对技术安全方面的要求的不同分类。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值