面试准备:Java开发基础(2)

各种补充

 

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);

        }

    }

 

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值