java基础知识
面向对象的特征
面向对象编程语言有封装、继承、抽象、多态4个主要的特征。
1)封装:封装是保证软件部件具有优良的模块性的基础,封装的目标就是要实现软件部件的“高内聚、低耦合”,防止程序相互依赖而带来的变动影响。在面向对象的编程语言中,对象是封装的基本单位。面向对象的封装就是把描述一个对象的属性和行为的代码封装到一个“模块”中,即一个类中。只要把变量和访问这个变量的方法放在一起,将一个类中的成员变量全部定义为私有的,只有这个类的方法可以访问,这就基本上实现了对象的封装。
2)抽象:抽象就是找出一些事物的相似和共性之处,然后将这些事物归为一个类,这个类只考虑这些事物的相似和共性之处,并且会忽略与当前主题和目标无关的哪些部分,将注意力集中在与当前目标有关的方面。
3)继承:继承是子类自动共享父类数据和方法的机制,这是类之间的一种关系,提高了软件的重用性和可扩展性。
4)多态:多态是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行时才确定,即一个引用变量到底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在程序运行期间才能决定。因为在程序运行时才能确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,、重载Overloading是一个类中多态性的一种表现。
Integer和int的区别
1)int是java提供的8中原始数据类型之一,java为每个呀un是数据类型提供了封装类,Integer是java为int提供的封装类(封装类=数据+操作)。
2)int的默认值为0,而Integer的默认值为null,即Integer可以区分出为赋值和值为0的区别,int无法表达出为赋值的情况。例如:想要表达出没有参加考试和考试成绩为0的区别,只能使用Integer。在JSP中Integer的默认值为null,所以用EL表达式在文本框中显示时,值为空表字符串,而int默认值为0,所以用EL表达式在文本框中显示时,结果为0,所以,int不适合作为WEB层的表单数据的类型。
3)Integer提供了一系列与int相关的操作方法。
“==”和equals方法的区别
1)“==”操作符是用来比较连个变量的值是否相等,也就是用来比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。
2)equals方法是用来比较两个独立对象的内容是否相等。
&与&&的区别
1)&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。
2)&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str!=null&&!str.equals(“”))表达式,当str为null时,后面的表达式不会执行,所以不会出现NullPointerException如果将&&改为&,则会抛出NullPointerException异常。If(x==33&++y>0)y会增长,If(x==33&&++y>0)不会增长
3)&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31&0x0f的结果为0x01。
String s="a"+"b"+"c"+"d";共创建了多少个对象?
只创建了一个String对象。
Java单例模式
概念:
java中单例模式是一种常见的设计模式,单例模式分三种:懒汉模式单例、饿汉模式单例、登记模式的那里三种。
单例模式有一下特点:
1、单例类只能有一个实例。
2、单例类必须自己自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。