各种补充
1.
2.Unicode 和 UTF-8 有什么区别?
https://www.zhihu.com/question/23374078
Unicode是什么:
Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。
UTF-8:
UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码Unicode字符。用在网页上可以统一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。
字符集:
字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode字符集等。计算机要准确的处理各种字符集文字,需要进行字符编码,以便计算机能够识别和存储各种文字。中文文字数目大,而且还分为简体中文和繁体中文两种不同书写规则的文字,而计算机最初是按英语单字节字符设计的,因此,对中文字符进行编码,是中文信息交流的技术基础。
ASCII字符集:
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。
请注意,ASCII是American Standard Code for Information Interchange缩写,而不是ASCⅡ(罗马数字2),有很多人在这个地方产生误解。
3.java什么时候要重写equal方法?
默认equals在比较两个对象时,是看他们是否指向同一个地址的。
但有时,我们希望两个对象只要是某些属性相同就认为他们的quals为true。比如:
Student s1 = new Student(1,"name1");
Student s2 = new Student(1,"name1");
如果不重写equals的话,他们是不相同的,所以我们要重些equals,判断只要他们的id和名字相同equals就为true,在一些集合里有时也这样用,集合里的contain也是用equals来比较
https://blog.csdn.net/championhengyi/article/details/53490549
https://blog.csdn.net/fhjdzkp/article/details/78304516
4.实例变量和静态变量的区别
看下面一个小程序
package fun;
//主程序
public class VariantTestDemo{
public static void main(String[] args) {
VariantTest t1=new VariantTest();
VariantTest t2=new VariantTest();
VariantTest t3=new VariantTest();
t1.VariantTest();
t2.VariantTest();
t3.VariantTest();
}
}
package fun;
//VariantTest的类
public class VariantTest {
//定义静态变量
public static int staticVar=0;
//定义实例变量
public int instanceVar=0;
//定义测试方法
public void VariantTest(){
staticVar++;
instanceVar++;
System.out.println("staticVar="+staticVar+"instanceVar="+instanceVar);
}
}
5.运行下面一个小程序可知
package fun;
public class demo2 {
public static void main(String[] args) {
System.out.println(test());
}
//静态方法,返回值是int类型
static int test(){
int x=5;
try{
//方法的返回值
return x;
}finally{
++x;
System.out.println(x);
}
}
}
finally里的code会被执行,而且是在return之前静态方法运行的时候执行,子程序运行完成之后,主程序才继续运行。
6.实现一个线程的方法?
继承Thread类与实现Runnable接口
A:创建线程的步骤:
1.定义一个类继承Thread。
2.重写run方法。
3.创建子类对象,就是创建线程对象。
4.调用start方法,开启线程并让线程执行,同时还会告诉jvm去调用run方法
public class MyThread extends Thread {
@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println(getName() + ":" + i);
}
}
}
创建线程的步骤。
1、定义类实现Runnable接口。
2、覆盖接口中的run方法。。
3、创建Thread类的对象
4、将Runnable接口的子类对象作为参数传递给Thread类的构造函数。
5、调用Thread类的start方法开启线程。
public class MyThread2 implements Runnable {
int num;
public MyThread2(int num) {
this.num = num;
}
@Override
public void run() {
for (int i = 0; i < 100; i++) {
//Thread t = Thread.currentThread();
//System.out.println(t.getName() + ":" + i);
//链式编程
System.out.println(Thread.currentThread().getName() + ":" + i + num);
}
}
}