Java基础知识点

                                                           W_Z_W写

Java基础疑难

 

1、接口:

    接口的默认修饰符是publicabstract的,但是当接口在一个类中声明时,把它当做类元素处理,即可以加在类成员的修饰符也可以加在它上,但final是在哪里都不行的;

*******************************************************************************

2、内部类:

类型:

1.成员内部类:定义在类中且不在函数中的类;

    创建对象格式(把内部类当做外部类的一个成员)

外部类.内部类 变量名=外部类对象.new内部类()

2.函数内部类:定义在函数里的类,只能在该函数的作用域内使用

    创建对象格式:把内部类当做普通类来使用,只不过作用域只在该函数内

3.静态内部类:定义在类中,且被修饰符static修饰的类

创建对象格式(不需要通过外部类对象)

外部类.内部类 变量名=new外部类.内部类()

*******************************************************************************

3、关键字:String不是关键字,而是类名,注意:关键字都是小写的;

*******************************************************************************

5、==equals()的区别:

作用:==用来判断地址与值是否相等;equals()用来判断内容是否相等,不考虑地址;

用法:基本数据类型判断是否相等用==byteshortintcharlongfloatdouble       boolean;字符串判断是否相同用equals()(String类的一个函数)

 

*******************************************************************************

6、数据的精度问题:

高精度的数据类型不能隐式的赋给低精度的数据类型,需要做显式的强制类型转换,同精度之间的转换或者是低精度转高精度都可以隐式的自动转换,当不同精度类型的数据进行数学运算时,结果会自动的转为高精度类型。

比如:int a=10;   float b=a;   正确;

         float a =10;  int b=a;   错误  正确形式为int b=(int)a;不过可能会造成精度丢失

这里的float a =10为什么不是float a =10f,因为10int类型的,精度比float低,所以可以自动转换为float

注意:带小数的值如果后面不加f,则默认是double类型

*******************************************************************************

7、java中的数据类型分析:

 

 

基本数据类型和引用类型之间的转化

 

*******************************************************************************

8、+号在Java中的作用

两种作用:1.数学运算:如果加号两边都是基本数据类型,则是数学运算;

  2.充当字符串连接符:如果加号的任意一边是非基本数据类型,则是连接符;

注意点:+符号是从左边开始算的,所以有如下例子

1.打印(1+2+”3”)结果为:33 (先执行数值1+数值2,得数值3在再字符串”3”连接)

2.打印(1+”2”+3)结果为:123(先执行数值1与字符串”2”连接,得字符串”12”)

3.打印(“1”+2+3)结果为:123(先执行字符串”1”与数值2连接,得字符串”12”)

整数转字符串:

 

特别注意:String 类型的字符串在赋值、++=运算时都是改变了对象的,即不是单纯的对象中内容的改变,而是得到一个新的对象;

String s=”aa”; s=”bb”(对象已经改变,即”aa”与”bb”也都是一个字符串对象)

       String s=”aa”;s+=”bb”;(对象也改变了)

*******************************************************************************

8、异常:

异常:程序运行过程中出现的非正常问题;

继承关系:Throwable是异常的祖先类,下面有两个直接子类,分别是:1.Error(错误);

      2.Exception(异常);

Exception的补充:异常分为受检型异常和非受检型异常,受检型异常在编译时就要处理 (比如加try catch语句,或者throw抛出),非受检时异常就是编译时没有报错,但是运行时出现的异常(比如空指针异常)

补充:程序的非受检异常一旦出现,整个程序会瘫痪

      异常代码块,可以通过try...catch方式来进行处理

      finally代码块:是异常代码块的统一出口,必须要执行

  如果有多个catch语句块,则从上往下捕获的时候,一定是从小到大级别或者同   级别捕获,即从子类到父类,异常捕获的具体性由上至下递减,且只要满足了一   个就被捕获,不再被下面的捕获,类似于case+break

*******************************************************************************

9、I/o流:

1.字符和字节的关系:个英文单词就是一个字符(1个字节);一个中文表示一个字符 (UTF-8为3个字节,GBK为2个字节);

2.大类继承图:

 

3.注意点:字符流不能直接包装字节流:除了InputStreamReaderOutputStreamWriter

*******************************************************************************

10、作用域修饰符详解:

作用域

当前类访问

同包

子类同包

子类不同包

其他(跨包,不是子类)

public

Y

y

Y

y

y

protected

y

y

y

y

n

default

y

y

y

n

n

Private

y

n

n

n

n

公共:不涉及到到隐私,公开的(一般情况下不用,,,static->类的 类名.)

保护:你想给留给子类,父类里面的东西一般都是保护的

默认:一般没有用

私有:一般所有属性都是他

*******************************************************************************

11、接口与抽象类的比较:

看属性:

接口中:必须是常量static final(Java中表示常量,必须在且仅能在声明时被初始化)

抽象类:可以是常量,也可以是变量

 

看方法:

接口中:全部是也只能是抽象方法

抽象类:可以有抽象方法,也可普通方法,也可以有构造方法

补充:1.接口中所有的方法和属性访问权限,必须是public abstract(可以省略不写)

  2.接口可以继承接口,且可以多继承,如Interface a extends Interface b,Interface c......

而类只能单继承,且不能继承接口,而只能是实现接口,但类实现接口可以同时实现多个接口,用关键字implement

*******************************************************************************

12、关键字static

static修饰的属性和方法都是属于类的,只跟类加载有关,而与对象的创建无关,被static修饰的属性或者变量在类加载时最先加载,而且只加载一次,在加载类时,在同被static修饰或者是同不被static修饰的情况下,代码块最先加载,然后到属性,然后才到函数,静态代码块在类加载时就会执行,而非静态代码块是在创建对象时执行;

注意:被static修饰的函数不能调用非静态的的属性或函数(因为静态的东西在加载类时就先加载了,而且非静态的东西在创建对象时才会有,所有无法调用非静态的东西)

*******************************************************************************

13、线程中调用start()函数与run()函数的区别:

调用run()函数是在当前线程调用run()函数,程序还是顺序执行的,所以还算单线程;

而调用start()函数是新创建一个线程,并通知Java虚拟机调用该线程的run()函数;

*******************************************************************************

14、小点补充:

+=-=*=/=运算符都具有自动强制转换的功能,

如:byte b=1;

int i=1;

b+=i;(不会报错,因为+=符号自动把b+i得到的int型结果强制转换成byte型然后赋给b)

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值