`

基础java

 
阅读更多
1.// 负数以其正值的补码形式表达(补码=反码加1)
// 2的二进制是0000 0010 -2的二进制是1111 1101 + 1 =  1111 1110
// 向右移动三位 1111 1111 = 11111 1111 -1 = 1111 1110 = 0000 0001 =1它对应-1
int a= -2;
System.out.println(a>>3);

答案-1

2.
private static int a[] = new int[5];
public static void main(String[] args) {
   System.out.println(a[0]);
}


3.
public static void main(String[] args) {
    System.out.println(method((byte)1,1.2));
}
private static ? method(byte x, double y) {
    return (short)x/y*2;
}


4.下列类定义中哪些是合法的抽象类的定义?
A、abstract Animal{abstract void growl();}
B、class abstract Animal{abstract void growl();}
C、abstract class Animal{abstract void growl();}
D、abstract class Animal{abstrac t void growl(){System.out.println(“growl”);};}


5.下列类定义中哪些是合法的抽象类的定义?
A、abstract Animal{abstract void growl();}
B、class abstract Animal{abstract void growl();}
C、abstract class Animal{abstract void growl();}
D、abstract class Animal{abstrac t void growl(){System.out.println(“growl”);};}

6.有以下程序片段,下列哪个选项不能插入到行1。( )
1.
2.public class Interesting{
3.//do sth
4. }
A、import java.awt.*; B、package mypackage;
C、class OtherClass{ } D、public class MyClass{ }
选择D,不能有两个public类,A是引用包,B是创建包,C是一个普通类

7.关于 for循环和 while循环的说法哪个正确? (  )
A.while循环先判断后执行,for循环先执行后判断。
B.while循环判断条件一般是程序结果,for循环的判断条件一般是非程序结果
C.两种循环任何时候都不可以替换
D.两种循环结构中都必须有循环体,循环体不能为空
最有可能选B

8. 输出结果
public class CPTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Child child = new Child();
		child.printAll();
	}
}
class Child extends Parent {
	
	public Child(){
		System.out.println("Child-gouzao");
	}
	void printMe(){
		System.out.println("childMe");
	}

	void printAll(){
		super.printMe();
		this.printMe();
		printMe();
	}
}

class Parent{
	public Parent(){
		System.out.println("Parent-gouzao");
	}
	void printMe(){
		System.out.println("printMe");
	}
}


9.java标识符
标识符就是用于给 Java 程序中变量、类、方法等命名的符号。
1.  标识符可以由字母、数字、下划线(_)、美元符($)组成,但不能包含 @、%、空格等其它特殊字符,不能以数字开头。譬如:123name 就是不合法滴
2.  标识符不能是 Java 关键字和保留字
( Java 预留的关键字,以后的升级版本中有可能作为关键字),但可以包含关键字和保留字。如:不可以使用 void 作为标识符,但是 Myvoid 可以
3.  标识符是严格区分大小写的。 所以涅,一定要分清楚 imooc 和 IMooc 是两个不同的标识符哦!
4.  标识符的命名最好能反映出其作用,做到见名知意。
Java 语言中有一些具有特殊用途的词被称为关键字。

下列哪个是java中的标识符:
fiedname supper 3number #number

10.在使用interface声明一个接口时,只可以使用( )修饰符修饰该接口?
A、private B、protected
C、private protected D、public
https://www.cnblogs.com/BaiLaowu/p/6618117.html

11.下列说法正确的是( )
数组是一种对象  数组属于一种原生类  int number=[]={31,23,33,43,35,63}  数组的大小可以任意改变

12.下面的程序创建了一个文件输出流对象,用来向文件test.txt中输出数据,假设程序当前目录下不存在文件test.txt,编译下面的程序Test.java后,将该程序运行3次,则文件test.txt 的内容是()。
import java.io.FileOutputStream;

public class PinganTest {

	public static void main(String[] args) {
		try {
			String string ="ABCDE";
			byte b[] =string.getBytes();
			FileOutputStream file = new FileOutputStream("D:\\test.txt",true);
			file.write(b);
			file.close();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println(e.toString());
		}

	}
}

A.ABCABC
B.ABCDE
C.Test
D.ABCDE ABCDE ABCDE

13.下面程序的运行结果(好题)
public class PinganTest {

	public static void main(String[] args) {
		Thread thread = new Thread(){
			public void run() {
				
				try {
					Thread.sleep(100);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				pong();
			};
		};
		
		thread.start();//thread.run();呢?
		System.out.print("ping");
	}
	
	public static void pong() {

		System.out.print("pong");
	}
}


pingpong,pongping,前两者都有可能,都不输出

14.下面哪个流类属于面向字符的输入流( )
A BufferedWriter B FileInputStream C ObjectInputStream D InputStreamReader
答案:D
解析:Java的IO操作中有面向字节(Byte)和面向字符(Character)两种方式。
面向字节的操作为以8位为单位对二进制的数据进行操作,对数据不进行转换,这些类都是InputStream和OutputStream的子类。
面向字符的操作为以字符为单位对数据进行操作,在读的时候将二进制数据转为字符,在写的时候将字符转为二进制数据,这些类都是Reader和Writer的子类。
总结:以InputStream(输入)/OutputStream(输出)为后缀的是字节流;
以Reader(输入)/Writer(输出)为后缀的是字符流。
扩展:Java流类图结构,一目了然,解决大部分选择题:


15.输入一个整型数组,数组里有正数也有负数。数组中一个或者连续的多个整数组成一个字数组。求所有字数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18

思路:
因为时间复杂度为O(n),则只能遍历一次数组,这里同时使用两个变量sum和max,其中sum保存的是当前的和,若sum<0,则从下一个位置从新记录,max记录的是历史的最大值,只有当sum>max时用sum替换max。

public class Item {  
    public static void main(String args[]) {  

       int array[] = {1, -2, 3, 10, -4, 7, 2, -5};  
       System.out.println(findMax(array));

    }  

    public static int findMax(int array[]){
        //加上约束条件,防止当数组为空时造成数组越界
        if (array.length == 0) {
            return 0;
        }

        int max = array[0];
        int sum = 0;

        for(int i=0; i<array.length; i++){  
            //如果加上某个元素sum>=0的话,就加;
            //当数组全为负数的时候只要有加法就一定比原来的数小,此时就相当于找出数组内最大的数 
            if(sum >= 0) { 
                sum += array[i];  
            }
            else{  
                sum = array[i]; //否则从当前位置重新计算  
            }
            if(sum > max){  
                max = sum;  
            }
        }  
        return max;  
    }
}




redis可以直接改list值吗
dubbo用户调用消费者经过哪些
执行计划器除了type有其他哪些
每次都去找吗
内存模型 1比1比8可以改吗
jvm优化





  • 大小: 58.6 KB
  • 大小: 44.6 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics