当前位置: 首页 > news >正文

做老师好还是网站编辑好江西公共资源交易网

做老师好还是网站编辑好,江西公共资源交易网,加快政务网站建设,百度下载安装最新版目录 1、面向对象的特征有哪些方面#xff1f; 2、访问修饰符 public,private,protected,以及不写#xff08;默认#xff09;时的区别#xff1f; 3、String 是最基本的数据类型吗#xff1f; 4、float f3.4;是否正确#xff1f; 5、short s1 1; s1 s1 1;有错吗…目录 1、面向对象的特征有哪些方面 2、访问修饰符 public,private,protected,以及不写默认时的区别 3、String 是最基本的数据类型吗 4、float f3.4;是否正确 5、short s1 1; s1 s1 1;有错吗?short s1 1; s1 1;有错吗 6、Java 有没有 goto 7、int 和 Integer 有什么区别 8、和的区别 9、解释内存中的栈(stack)、堆(heap)和方法区(method area)的用法。 10、Math.round(11.5) 等于多少Math.round(-11.5)等于多少 11、switch 是否能作用在 byte 上是否能作用在 long 上是否能作用在 String 上 1、面向对象的特征有哪些方面 面向对象的特征主要有以下几个方面 抽象抽象是将一类对象的共同特征总结出来构造类的过程包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为并不关注这些行为的细节是什么。 继承继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类超类、基类得到继承信息的类被称为子类派生类。继承让变化中的软件系统有了一定的延续性同时继承也是封装程序中可变因素的重要手段如果不能理解请阅读阎宏博士的《Java 与模式》或《设计模式精解》中关于桥梁模式的部分 封装通常认为封装是把数据和操作数据的方法绑定起来对数据的访问只能通过已定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装我们编写一个类就是对数据和数据操作的封装。可以说封装就是隐藏一切可隐藏的东西只向外界提供最简单的编程接口可以想想普通洗衣机和全自动洗衣机的差别明显全自动洗衣机封装更好因此操作起来更简单我们现在使用的智能手机也是封装得足够好的因为几个按键就搞定了所有的事情。 多态性多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分为编译时的多态性和运行时的多态性。如果将对象的方法视为对象向外界提供的服务那么运行时的多态性可以解释为当 A 系统访问 B 系统提供的服务时B系统有多种提供服务的方式但一切对 A 系统来说都是透明的就像电动剃须刀是 A 系统它的供电系统是 B 系统B 系统可以使用电池供电或者用交流电甚至还有可能是太阳能A 系统只会通过 B 类对象调用供电的方法但并不知道供电系统的底层实现是什么究竟通过何种方式获得了动力。方法重载overload实现的是编译时的多态性也称为前绑定而方法重写override实现的是运行时的多态性也称为后绑定。 运行时的多态是面向对象最精髓的东西要实现多态需要做两件事 1). 方法重写子类继承父类并重写父类中已有的或抽象的方法 2). 对象造型用父类型引用引用子类型对象这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为。 2、访问修饰符 public,private,protected,以及不写默认时的区别 修饰符 当前类 同 包 子 类 其他包 public √ √ √ √ protected √ √ √ × default √ √ × × private √ × × × 类的成员不写访问修饰时默认为 default。默认对于同一个包中的其他类相当于公开public对于不是同一个包中的其他类相当于私有private。受保护protected对子类相当于公开对不是同一包中的没有父子关系的类相当于私有。Java 中外部类的修饰符只能是 public 或默认类的成员包括内部类的修饰符可以是以上四种。 3、String 是最基本的数据类型吗 不是。Java 中的基本数据类型只有 8 个byte、short、int、long、float、double、char、boolean除了基本类型primitive type剩下的都是引用类型reference typeJava 5 以后引入的枚举类型也算是一种比较特殊的引用类型。 4、float f3.4;是否正确 不正确。3.4 是双精度数将双精度型double赋值给浮点型float属于下转型down-casting也称为窄化会造成精度损失因此需要强制类型转换float f (float)3.4; 或者写成 float f 3.4F;。 5、short s1 1; s1 s1 1;有错吗?short s1 1; s1 1;有错吗 对于 short s1 1; s1 s1 1;由于 1 是 int 类型因此 s11 运算结果也是 int型需要强制转换类型才能赋值给 short 型。而 short s1 1; s1 1;可以正确编译因为 s1 1;相当于 s1 (short)(s1 1);其中有隐含的强制类型转换。 6、Java 有没有 goto goto 是 Java 中的保留字在目前版本的 Java 中没有使用。根据 James GoslingJava 之父编写的《The Java Programming Language》一书的附录中给出了一个 Java 关键字列表其中有 goto 和 const但是这两个是目前无法使用的关键字因此有些地方将其称之为保留字其实保留字这个词应该有更广泛的意义因为熟悉 C 语言的程序员都知道在系统类库中使用过的有特殊意义的单词或单词的组合都被视为保留字 7、int 和 Integer 有什么区别 Java 是一个近乎纯洁的面向对象编程语言但是为了编程的方便还是引入了基本数据类型但是为了能够将这些基本数据类型当成对象操作Java 为每一个基本数据类型都引入了对应的包装类型wrapper classint 的包装类就是 Integer从 Java 5 开始引入了自动装箱/拆箱机制使得二者可以相互转换。Java 为每个原始类型提供了包装类型 原始类型: booleancharbyteshortintlongfloatdouble 包装类型BooleanCharacterByteShortIntegerLongFloatDouble class AutoUnboxingTest {public static void main(String[] args) {Integer a new Integer(3);Integer b 3; // 将 3 自动装箱成 Integer 类型int c 3;System.out.println(a b); // false 两个引用没有引用同一对象System.out.println(a c); // true a 自动拆箱成 int 类型再和 比较} } 近还遇到一个面试题也是和自动装箱和拆箱有点关系的代码如下所示 public class Test03 {public static void main(String[] args) {Integer f1 100, f2 100, f3 150, f4 150;System.out.println(f1 f2);System.out.println(f3 f4);} } 如果不明就里很容易认为两个输出要么都是 true 要么都是 false。首先需要注意的是 f1、f2、f3、f4 四个变量都是 Integer 对象引用所以下面的运算比较的不是值而是引用。装箱的本质是什么呢当我们给一个 Integer 对象赋一个 int 值的时候会调用 Integer 类的静态方法 valueOf如果看看 valueOf 的源代码就知道发生了什么。 public static Integer valueOf(int i) {if (i IntegerCache.low i IntegerCache.high)return IntegerCache.cache[i (-IntegerCache.low)];return new Integer(i); } IntegerCache 是 Integer 的内部类其代码如下所示 /*** Cache to support the object identity semantics of autoboxing for values between* -128 and 127 (inclusive) as required by JLS.** The cache is initialized on first usage. The size of the cache* may be controlled by the {code -XX:AutoBoxCacheMaxsize} option.* During VM initialization, java.lang.Integer.IntegerCache.high property* may be set and saved in the private system properties in the* sun.misc.VM class.*/private static class IntegerCache {static final int low -128;static final int high;static final Integer cache[];static {// high value may be configured by propertyint h 127;String integerCacheHighPropValue sun.misc.VM.getSavedProperty(java.lang.Integer.IntegerCache.high);if (integerCacheHighPropValue ! null) {try {int i parseInt(integerCacheHighPropValue);i Math.max(i, 127);// Maximum array size is Integer.MAX_VALUEh Math.min(i, Integer.MAX_VALUE - (-low) -1);} catch( NumberFormatException nfe) {// If the property cannot be parsed into an int, ignore it.}}high h;cache new Integer[(high - low) 1];int j low;for(int k 0; k cache.length; k)cache[k] new Integer(j);// range [-128, 127] must be interned (JLS7 5.1.7)assert IntegerCache.high 127;}private IntegerCache() {} } 简单的说如果整型字面量的值在-128 到 127 之间那么不会 new 新的 Integer对象而是直接引用常量池中的 Integer 对象所以上面的面试题中 f1f4 的结果是 false。 提醒越是貌似简单的面试题其中的玄机就越多需要面试者有相当深厚的功力。 8、和的区别 运算符有两种用法 (1)按位与 (2)逻辑与。 运算符是短路与运算。逻辑与跟短路与的差别是非常巨大的虽然二者都要求运算符左右两端的布尔值都是true 整个表达式的值才是 true。之所以称为短路运算是因为如果左边的表达式的值是 false右边的表达式会被直接短路掉不会进行运算。很多时候我们可能都需要用而不是例如在验证用户登录时判定用户名不是 null 而且不是空字符串应当写为username ! null !username.equals(“”)二者的顺序不能交换更不能用运算符因为第一个条件如果不成立根本不能进行字符串的 equals 比较否则会产生 NullPointerException 异常。注意逻辑或运算符|和短路或运算符||的差别也是如此。 补充如果你熟悉 JavaScript那你可能更能感受到短路运算的强大想成为JavaScript 的高手就先从玩转短路运算开始吧。 9、解释内存中的栈(stack)、堆(heap)和方法区(method area)的用法。 通常我们定义一个基本数据类型的变量一个对象的引用还有就是函数调用的现场保存都使用 JVM 中的栈空间而通过 new 关键字和构造器创建的对象则放在堆空间堆是垃圾收集器管理的主要区域由于现在的垃圾收集器都采用分代收集算法所以堆空间还可以细分为新生代和老生代再具体一点可以分为 Eden、Survivor又可分为 From Survivor 和 To Survivor、Tenured方法区和堆都是各个线程共享的内存区域用于存储已经被 JVM 加载的类信息、常量、静态变量、JIT 编译器编译后的代码等数据程序中的字面量literal如直接书写的 100、”hello”和常量都是放在常量池中常量池是方法区的一部分。栈空间操作起来最快但是栈很小通常大量的对象都是放在堆空间栈和堆的大小都可以通过 JVM的启动参数来进行调整栈空间用光了会引发 StackOverflowError而堆和常量池空间不足则会引发 OutOfMemoryError。 String str new String(hello); 上面的语句中变量 str 放在栈上用 new 创建出来的字符串对象放在堆上而”hello”这个字面量是放在方法区的。 补充 1较新版本的 Java从 Java 6 的某个更新开始中由于 JIT 编译器的发展和”逃逸分析”技术的逐渐成熟栈上分配、标量替换等优化技术使得对象一定分配在堆上这件事情已经变得不那么绝对了。 补充 2运行时常量池相当于 Class 文件常量池具有动态性Java 语言并不要求常量一定只有编译期间才能产生运行期间也可以将新的常量放入池中String类的 intern()方法就是这样的。 看看下面代码的执行结果是什么并且比较一下 Java 7 以前和以后的运行结果是否一致。 String s1 new StringBuilder(go).append(od).toString(); System.out.println(s1.intern() s1); String s2 new StringBuilder(ja).append(va).toString(); System.out.println(s2.intern() s2); 10、Math.round(11.5) 等于多少Math.round(-11.5)等于多少 Math.round(11.5)的返回值是 12Math.round(-11.5)的返回值是-11。四舍五入的原理是在参数上加 0.5 然后进行下取整。 11、switch 是否能作用在 byte 上是否能作用在 long 上是否能作用在 String 上 在 Java 5 以前switch(expr)中expr 只能是 byte、short、char、int。从 Java5 开始Java 中引入了枚举类型expr 也可以是 enum 类型从 Java 7 开始expr 还可以是字符串String但是长整型long在目前所有的版本中都是不可以的。 要想了解更多 千题千解·Java面试宝典_时光の尘的博客-CSDN博客
http://www.pierceye.com/news/920354/

相关文章:

  • 微信网站后台功能哪里买域名便宜
  • 合肥重点工程建设局密云seo排名优化培训
  • 二学一做网站福建建设资格执业注册管理中心网站
  • vps 网站上传做网站费用需要分摊吗
  • 建网站 考虑oou淘宝客图片wordpress模板
  • 玩具网站开发背景小说网站开发文档
  • 遵义网站设计公司制作网站需要
  • 做广告公司网站建设价格成都seo招聘
  • 网站建设与规划试卷友联互换
  • 宠物网站建设费用天元建设集团有限公司是国企吗
  • 南宁在百度上建网站网站设计怎么做链接
  • 多多进宝怎么做自己网站沈阳正规的男科医院
  • 做简历的网站叫什么软件外贸网站建设工作计划
  • 关键词搜索引擎网站公司要求做网站
  • 如何判断网站开发语言浙江省网站建设报价
  • 建设一个网站思路有关网站建设的网站
  • 网站文明建设工程包括做电影网站什么后果
  • 邯郸市有搞网站服服务的吗怎样免费建设免费网站
  • 衡水学校网站建设wordpress后台中文安装
  • 英文网站建站模板电子名片制作app
  • 沧州网站建设多少钱网站多域名
  • 自己做的网站怎么被搜录免费在线观看韩国电视剧网站推荐
  • 网站推广策划案格式及范文专业做网站排名多少钱
  • 做网站优化多少钱南京华典建设有限公司网站
  • 建网站是什么专业类别海洋高端的专业做网站
  • 网站建设评审标准asp网站安全吗
  • 网站服务器怎么维护网站建设讠金手指科杰
  • 网站关键词推广哪家好咸阳seo推广
  • 自己建设网站难不难门户网站建立流程
  • 制作梦核的网站做网站注意哪方面