JavaSE复习——基础篇

针对此次的java期末考试写几篇文,作为自己复习资料。

入门篇——定义概念

基础篇——基础知识

技术篇——对知识的深入理解


11、有以下方法的定义,请选择该方法的返回类型(    )。
	ReturnType  method(byte x, double y)
	{
		return  (short)x/y*2;
	}
A、byte	B、short	C、int	D、double

选D

1.运算时所有byte、short、char型将被提升到int型

2.整个算术表达式的数据类型自动提升到与表达式中最高等级操作数同样的类型(排序double>float>long>int>short>byte)

4.阅读程序段,回答问题:
public class ClassA{
  public void method1(int i){}
  public void method2(int i){}
  public static void method3(int i){}
  public static void method4(int i){}
}
public class  ClassB extends ClassA{
  public static void method1(int i){}
  public void method2(int i){}
  public void method3(int i){}
  public static void method4(int i){}
}
ClassB中(method1、method2、method3、method4)四个方法,方法 
  _method2_______覆盖了父类方法;方法___method4_____ 隐藏了父类方法。

Java实例方法被覆盖,静态方法被隐藏。(详见技术篇

3. 已知有下列Test类的说明,则下列哪个语句是正确的?(_______    )
public class Test 
{
    private float f = 1.0f;
    int m = 12;
    static int n=1;
    public static void main(String args[]){
        Test t = new Test();
        //在此加入一行代码
    } 
}
    A)t.f;
    B)this.n;
    C)Test.m;
    D)Test.f;

链接:https://www.nowcoder.com/questionTerminal/ac5b5d29942a40bfa182a21db3b086a2?orderByHotValue=1&page=1&onlyReference=false
来源:牛客网
 

1、f 虽然是 Test 类的私有成员属性,但因为 main 方法就在 Test 类内,因此可以通过 “对象名.属性名” 的方式调用,所以 A 对。

2、static 静态成员属性不能使用 this 关键字调用,B 错

      this是指向对象的的引用,而静态方法在类加载的时候创建加载,此时没有创建对象。

3、m 和 f 都是普通成员属性,而 “类名.” 方式只能调用 静态成员属性,因此 C 和 D 都错。

12.顺序执行下列程序语句后,则b的值是(  )
    String  a="Hello";
    String  b=a.substring(0,2);
A)Hello
B)hello
C)Hel
D)null

这道题无正确选项,正确答案为"he",substring为左闭右开

string.substring(from):此时相当于从from位置截取到原字符串末尾

1、String.substr( ):作用也是抽去一个子串,但是它和上面的String.substring( )有所不同
用法如下:string.substr(start, length)
start:指代截取子串开始下标
length:截取子串的长度(可省略)

Substr补充两种特殊情况:
a、第二个参数超过了剩余字符长度,这种情况下默认从,start位置到原字符串末尾,即返回:"ello"

b、第一个参数为负数
这种情况,从字符串尾部开始计算,-1指字符串最后一个字符,-2指倒数第二个字符...依次类推

2、String.substr(start):不带length参数,默认指代从start位置截取到字符串末尾

13.下列整型的最终属性 i 的定义中,正确的是(____    )。
  A) static final int i=100;     B) final i;
  C) static int i;               D) final float i=1.2f;

题目要点:
    一:整形
    二:最终属性(final)
    三:定义,而不只是声明

17、给定下列表达式
  Integer I= new Integer(42);
  Long  L= new Long(42);
  Double D= new Double(42.0);
则下列表达式输出为true的是__D___
(A) (I==L)  (B)  (I==D)   (C) (D==L)   (D)  (I.equals (D))

   此处无正确答案

   ABC不同类型使用 == 编译出错

   D中包装类使用equals会先判断是否instance,不是的话直接返回false

   (用instanceof判断传入的对象和this是不是一个类的对象)

   (详见技术篇)

10.下面在命令行运行Java应用程序A:
    java A the first snow came first  
    怎样才能在main(String args[])方法中访问单词”first”(C) 
A )args[0]       B) args[2]        C) args[4]       D) args[5]

  java:对jvm说的运行命令

  A:这个类

15.下面程序中,有错误的一行是:( )
Final  class MyClass            ①
          { int var=100 ;          ②
            static int getVar()         ③
           { 
            return var;               ④
       } } 
A)①	           B)②           C)③	        D)④

   静态方法不能调用非静态变量。

2.关于Java语言的内存回收机制,下列选项中正确的一项是(C)
    A) Java程序要求用户必须手工创建一个线程来释放内存
    B) Java程序不允许用户使用手动来释放内存
    C) 内存回收线程负责释放无用内存
    D) 内存回收线程不能释放内存对象

Java和c++之间有一堵由内存分配和垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人想出来

 java的GC回收是完全自动的,没有提供相关api手动回收,所有的内存分配和回收权限都在jvm,不在开发人员手里

没有绝对的强制垃圾回收的方法,不过可以这样去做:
1. 对于不再引用的对象,及时把它的引用赋为null。 obj = null;
2. 如果内存确实很紧张,调用System.gc() 方法来建议垃圾回收器开始回收垃圾。通知GC运行,但是Java语言规范并不保证GC一定会执行。

重点内容
Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有”作用域”的概念,只有对象的引用才有”作用域”。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。
--------------------- 
作者:youngogo 
来源:CSDN 
原文:https://blog.csdn.net/youngogo/article/details/82184954 
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/qq_41782582/article/details/85063300