网上做翻译兼职网站,英文网站建设用哪种字体,wordpress文章修改大小,2345网址导航删除办法1. 面向对象的特征面向对象的特征包括抽象、封装、继承和多态。 抽象就是忽略一个主题中与当前目标无关的某些方面#xff0c;以便更加充分的注意到与当前目标有关的方面。抽象并不打算了解全部的问题#xff0c;而只是其中的一部分#xff0c;暂时不用考虑细节。抽象包括两…1. 面向对象的特征面向对象的特征包括抽象、封装、继承和多态。 抽象就是忽略一个主题中与当前目标无关的某些方面以便更加充分的注意到与当前目标有关的方面。抽象并不打算了解全部的问题而只是其中的一部分暂时不用考虑细节。抽象包括两个方面第一是过程抽象第二是数据抽象。封装是指隐藏对象的属性和实现细节仅对外提供公共访问方式。 封装了好处在于将变化进行了隔离便于使用提高了服用性同时由于可以避免外部对于属性的直接访问提高了安全性。 封装的原则将不需要对外提供的内容都隐藏起来把属性都隐藏提供公共的方法对其访问。 private是一个权限修饰符被private修饰的成员只在本类中有效。私有是封装的一种体现但封装不仅仅是私有。 继承继承是一种连接类的层次模型并且允许和鼓励类的重用它提供了一种明确表述性的方法一个类可以从一个现有的类派生新类继承了原始类的特性新类称为子类或者派生类原始类称为父类也叫基类。派生类可以从它的基类继承方法和实例变量并且类可以增加或者修改新的方法使其更适合特殊的需要。 多态多态性是指允许不同类的对象对同一个消息做出响应多态性包括参数化多态性和包含多态性多态性语言具有灵活、抽象、行为共享和代码共享的优势很好的解决了应用程序中函数同名的问题。 2. Overload和Override有什么区别 方法的重写overriding和重载Overloading是java多态性的不同表现。重写Overriding是父类和子类之间多态性的一种表现重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数我们说该方法被重写(Overriding)。子类的对象使用这个方法时将调用子类中的定义对他而言父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法它们或有不同的参数个数或有不同的参数类型则称为方法的重载(Overloading).3. abstract class 和 interface有什么区别 抽象类用于创建一个体现某些基本行为的类并为该类声明方法但不能在该类中实现该类的情况。接口是抽象类的变体。在接口中所有方法都是抽象的。抽象类的子类为他们的父类中的所有抽象方法提供实现否则他们也是抽象类。接口只可以定义static final成员变量。接口的实现与子类相似除了该实现类不能从接口定义中继承行为。4. 当一个对象实例作为一个参数被传递到方法中时参数的值就是该对象的引用对象的内容可以在被调用的方法中改变但对象的引用是永远不会变的。 5. abstract的method是否可以同时是static,是否可以同时是native是否可以是synchronized 都不能。 abstract用来声明抽象的方法抽象方法并没有方法类不能被直接调用必须在子类overriding后才能使用所以访问被abstract修饰的方法依赖于具体的对象实例而被static修饰的方法是被直接访问的这就引发了逻辑中的冲突同时还要注意父类中是静态方法子类中不能覆盖为非静态方法。 native修饰的方法是本地方法该方法的实现由非java语言实现比如c语言一般用于java与外界语言交互或者与操作系统交互native可以和除abstract之外的所有java标识符连用因为native方法是有实现体的只不过这些实现体是由非java语言实现的但是abstract却是显明的指定这个方法是没有实现体的。 synchronized用于防止多个线程同时调用一个对象的该方法使用它的前提是该方法可以被对象直接调用的显然和abstract不能同时连用。 6. 接口是否可以继承接口抽象类是否可以实现接口抽象类是否可继承实体类 接口可以继承接口。抽象类可以实现接口抽象类可以继承实体类但前提是实体类必须有明确的构造函数。 7. Java关键字注意点 所有的java关键字都是小写的 goto和const是保留关键字在java中没有使用 true,false,null不是严格意义上的关键字而是文字常量8. 数组 数组的两种初始化方式静态初始化和动态初始化 动态初始化数组必须给出长度否则将报缺少数组维数的错误 动态初始化二维数组时可以只指定第一维德长度而不指定第二维的 当数组包含的元素是引用数据类型的时候必须为每个元素实例化否则在使用的时候会出现空指针异常。9. float和double都不能进行精确运算。 例如2.0-1.1并不等于0.9因为计算机使用的二进制并不能准备的表示浮点数 不能简单的使用四舍五入的方法解决上述问题 可以使用BigDecimal类来解决这个问题。 BigDecimal a1 new BigDecimal(Double.toString(2.0)); BigDecimal a2 new BigDecimal(Double.toString(1.1)); System.out.println(a1.subtract(a2).doubleValue()); 10. 自增自减运算符陷阱 main(String[] args){ int j 0; for(int i 0; i 100; i){ j j ; } System.out.println(j);//打印出来的结果是0,因为j jjvm工作时先运算j然后将j自增之前的值赋给左侧的j } 11. 字符与字符串陷阱 System.out.println(a b);// ab, 字符串的拼接 System.out.println(a b);// 195, 字符a的ascii码加上b的ascii码 System.out.println(a b);// ab字符b被转化成了字符串b 12. java中的异常处理机制的简单原理和应用 java程序违反了java的语义规则时java虚拟机就会将发生的错误表示为一个异常。违反语义规则包括两种情况。一种是java类库内置的语义检查。例如数组下标越界会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException.另外一种情况就是java允许程序员扩展这种语义检查程序员可以创建自己的异常并自由选择在何时使用throw关键字引发异常。所有的异常都是java.lang.Throwable的子类. 13. finalize方法是在垃圾回收器删除对象之前对这个对象调用的一个方法. 14. 什么时候使用assert 通常在开发和测试时使用在软件发布后关闭。 15. 构造函数 构造函数构建创造对象时调用的函数创建对象都必须要通过构造函数初始化。 作用可以给对象进行初始化。 一个类中如果没有定义过构造函数那么该类中会有一个默认的空参数构造函数如果在类中定义了指定的构造函数那么类中的默认构造函数就没有了。 一般函数和构造函数什么区别呢 a. 构造函数对象创建时就会调用与之对应的构造函数对对象进行初始化。 一般函数对象创建后需要函数功能时才调用。 b. 构造函数对象创建时会调用只调用一次。 一般函数对象创建后可以被调用多次。 什么时候定义构造函数呢 在描述事物时该事物一存在就具备的一些内容这些内容都定义在构造函数中。 构造函数可以有多个用于对不同的对象进行针对性的初始化.多个构造函数在类中是以重载的形式来体现的。 细节1构造函数如果完成了set功能。set方法是否需要。2一般函数不能直接调用构造函数。3构造函数如果前面加了void就变成了一般函数。4构造函数中是有return语句的ps,可以利用这个特点来控制构造函数的初始化比如if(age10){return;}用来实现如果age10那么就拒绝初始化. 16. this引用 当成员变量和局部变量重名可以用关键字this来区分。如 Person(String name)
{this.name name;
}this : 代表对象。代表哪个对象呢当前对象。 this就是所在函数所属对象的引用。 简单说哪个对象调用了this所在的函数this就代表哪个对象。 this也可以用于在构造函数中调用其他构造函数。注意只能定义在构造函数的第一行。因为初始化动作要先执行。 17. 字符串的拼接 为连接n个字符串而重复的使用字符串连接操作符()需要n的平方级的时间。例如 s4 s1 s2 s3; 不过如果被拼接的字符串都是字面量的话java编译器在编译器就会将其优化。如: S4 a b c;变异完成的时候S4的值就是abc. 转载于:https://www.cnblogs.com/byron0918/p/4663211.html