java 基础复习资料

15 篇文章 0 订阅
 


native关键字指明是对本地方法的调用,在JAVA中是只能访问但不能写的方法,它的位置在访问权限修饰

语的后面及返回值的前面。

corrected argument[正确变量]


《类型转换》  《《重点,切记 》》
类型由低级到高级分别为
[center](byte,short,char)--int--long--float--double[/center]
它们可以自动转换
对于byte,short,char三种类型而言,他们是平级的,因此不能相互自动转换,可以使用下述的强制类型转

换。
short i=99;char c=(char)i;System.out.println("output:"+c);
从高级到低级强制转换:(有失精度)
int i=99;byte b=(byte)i;char c=(char)i;short s = (short)i;float f=i;

Java共有六个包装类,分别是Boolean、Character、Integer、Long、Float和Double,从字面上我们就

可以看出它们分别对应于
 boolean、char、int、long、float和double。而String和Date本身就是类。所以也就不存在什么包装

类的概念了。
   当希望把double型转换为int型时:

  方法1: double d1=100.00;     int i1=Double(d1).intValue();
方法2.int in = (int)d1;
方法3. system.out.println((int)d1)

在类的构造方法种,通过super语句调用这个类的父类的构造方法
在子类种访问父类的被屏蔽的方法和属性
只能在构造方法或实例方法内使用super关键字,而在静态方法和静态代码块内不能使用super


equals()方法只能比较引用类型,“==”可比较引用及基本类型。
用“==”进行比较时,符号两边的数据类型必须一致(可相互转换的基本类型除外),否则编译出错。


基本类型进行的是值比较,而对象类型进行的是地址比较,也就是对指向它们内存地址的指针进行比较。

(java 基本类型:基本类型可以
分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。

数值类型又可以分为整数类型
byte、short、int、long和浮点数类型float、double。)

在程序中实现字节与字符转换时,采用规范“ISO8859-1”是最适宜的方式。

移位操作只对整型有效

/构造函数执行总是向上的,而且在任何构造函数执行之前就已经创建完毕了

FlowLayout的特性是其中的控件大小不随着容器尺寸的变化而变化,但控件的相对位置会有所改变。

注意:goto、const是Java关键字,但是不使用。

20.
二维数组的定义
  C. int a[][] = new int[10][10];
   D. int [][]a = new int[10][10];
   E. int []a[] = new int[10][10];

21.
不能通过抛出异常类型来重载,在同一个类中只能通过 实例化类的对象来调用类的的方法。

22.
JAVA中成员访问控制:
有四种类型,从不开放 到 开放,分别为 private,default(默认的,同包中可访问)(在成员前或类前

不加任何访问控制即为default),
protected,public。在一个类的前面只能有两种访问控制类型即default(在类前不加任何访问控制即为

default)和public ,同一个包中
的类互相访问只要有default这样的访问权限就够了,如果不在同一个包中的类互相访问类前必须要有

public这样的访问权限

// default型:(同包中)如果成员前没有加任何型,就表示default型或朋友型或包型,表示此成员只

能被同一个包中的类的成员访问
// private[私有的]型(同类中):表示只能被同一个类中的其它成员访问,其它的都不能访问

/* 
    如果父类与子类不在同一个包中,子类想 extends 父类的成员(成员属性和成员方法), 
    父类的成员访问控制类型必须是 protected 以上,也就是说成员 
    访问控制类型必须为 protected 或 public 的 
*/ 

23.
JAVA抽象类的理解:
1、普通的JAVA类也可以在CLASS前加ABSTRACT声明为抽象,只不过此时的该类不再可以实例化。
2、如果一个类里有一个以上的抽象方法,则该类必须声明为抽象类,该方法也必须声明为抽象。
3、抽象类不能被实例化,但不代表它不可以有构造函数,抽象类可以有构造函数,备继承类扩充。

接口中的方法如果没有给作用域,则默认为public abstract(),如果给作用域的话,只能给public或者

public abstract,也是public abstract相当于没有意义
抽象类中的方法如果没有给作用域,则默认作用域权限跟普通类一样,如果给作用域的话,除了private其

它都可以给。

24.
抽象类与接口的区别:
1--接口中所有的方法都必须是抽象的方法,这些方法留给实现接口的类来实现,而抽象类既可以有抽象的

方法,也可以有实现的方法。
2--抽象类偏重于属性,接口偏重于行为。
3--抽象类实现接口,不需要显示的声明接口中的抽象方法,不需要完全实现接口中的方法。
   抽象类继承抽象类,可以不显示的写出抽象方法,但直到非抽象的子类必须实现所有的抽象方法。

抽象类中可以有静态的方法,而接口中不允许有静态的方法。

抽象类可以继承抽象类和非抽象类,可以实现接口(不需要所有方法),但不可以继承接口
   接口可以继承接口,但不可以实现接口。

25.
什么是多态:
Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具

有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型

来决定具体使用哪个方法, 这就是多态性。

26.
重写方法的访问修饰符一定要大于被重写方法的访问修饰符(public>protected>default>private)。

28.
 double x = 1.234;   //1
  double y = 2;   //2
  System.out.println(" "+x+y);   //3
  System.out.println(x+y+"");   //4
这是正确的。

29.
//static方法总是最先加载和运行(即在类加载蛙式就开始执行)
String target = "IbmSunJavaBeaWeblogicOracle...";
System.out.println(target.substring(6,10)); //output:java 它的索引是从0开始并且取到终止值

的前一个符

hashCode()方法可以重写,但重写的逻辑要和equals()保持一致性。

30.
Math.(函数)
round(double a)
          返回最接近参数的 long。
static int round(float a)
          返回最接近参数的 int。
ceil(double a)返回最小的(最接近负无穷大)

30。
//有关Math.*函数
  System.out.print(Math.floor(156.1)+"/");//返回最大的(最接近正无穷大)

double 值,该值小于等于参数,并等于某个整数。
  System.out.print(Math.ceil(-166.3)+"/");//返回最小的(最接近负无穷大)

double 值,该值大于等于参数,并等于某个整数。
  System.out.print(Math.round(-123.5)+"/");//int round(float a)返回最接近参

数的 int。结果将舍入为整数:加上 1/2,
  //对结果调用 floor 并将所得结果强制转换为 int 类型。换句话说,结果等于以下表

达式的值:(int)Math.floor(a + 0.5f)
  System.out.println(Math.random());//random()返回带正号的 double 值,该值

大于等于 0.0 且小于 1.0。返回值是一个伪随机选择的数,
在该范围内(近似)均匀分布。
 //abs(int a)返回 int 值的绝对值。  
  System.out.println(Math.max(123.456,456.123));//max(int a,int b)返回两个

int (也可以其它数据类型)值中较大的一个。也就是说,
  //结果为更接近 Integer.MAX_VALUE 值的参数。如果参数值相同,那么结果也是同一

个值。

31.
字符大小比较:
以下都是合理的
 System.out.println('a'>'3');
 char c = str.charAt(a);
 tag = c >= '0' && c <= '9';// 这里比较的是char字符的ASCCAL码值

32.
字符串连接:[(String).concat(String),即concatenate 连接]
String str ="java word!";  
System.out.print(str.concat("welcome your come in!!").concat("   yes,i can"));
字符串匹配:
String []array = str1.split(" ");
String str ="java word!"; 
String str1= str.concat("welcome your come in!!").concat("   yes,i can");
String []array = str1.split(" ");


33.
高级循环的使用:
String [] array={"hello","world", " i","love","you"}
for(String s:array)
System.out.println(s);//s表示里面的对象
   
34.
Vector[向量,矢量]
Vector 类可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件。
但是,Vector 的大小可以根据需要增大或缩小,以适应创建 Vector 后进行添加或移除项的操作。
与新 collection 实现不同,Vector 是同步的。

35.
移位操作:
负数转二进同制:先换算成二进制然后取反再加一即可
-1右移多少位都是是-1
=================================================================
   注意:负数都是用补码参与运算的。得到的也是补码,需要减1取反获得原码。         
           千万要理解这句话!!!                                                           

                                        
==================================================================
移位运算符面向的运算对象也是二进制的“位”。可单独用它们处理整数类型(主类型的一种)。
左移位运算符(<<)能将运算符左边的运算对象向左移动运算符右侧指定的位数(在低位补0)。
“有符号”右移位运算符(>>)则将运算符左边的运算对象向右移动运算符右侧指定的位数。
@@@@@@@@@@@@@@@@@@@@@@@@@@“有符号”右移位运算符使用了“符号扩展”:若值为正,则在高位插入0

;若值为负,则在高位插入1。@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@Java也添加了一种“无符号”右移位运算符(>>>),它使用了“零扩展”

:无论正负,都在高位插入0。@@@@@@@@@@@@@@@@@@@@@@@@@@
这一运算符是C或C 没有的。若对char,byte或者short进行移位处理,那么在移位进行之前,它们会自动

转换成一个int。
只有右侧的5个低位才会用到。这样可防止我们在一个int数里移动不切实际的位数。
若对一个long值进行处理,最后得到的结果也是long。此时只会用到右侧的6个低位,防止移动超过long值

里现成的位数。
但在进行“无符号”右移位时,也可能遇到一个问题。若对byte或short值进行右移位运算,
得到的可能不是正确的结果(Java 1.0和Java 1.1特别突出)。它们会自动转换成int类型,并进行右移

位。
但“零扩展”不会发生,所以在那些情况下会得到-1的结果。

  int i=-1;
  int j=i>>>32;
  System.out.println(j);//输出为-1
JAVA进行移位运算中因为int是占32位,进行移位的数是32的模,所以当i>>>32的时候就等于i>>>0,相当于

没有进行移位.
我又试了试long类型的移位,long占8字节也就是64位,所以移位的数是64的模.
算数右移最高位补符号
逻辑右移补0.
算数右移相当于有符号数除2(-1是特例).
逻辑右移相当于无符号数除2

36.
StringBuffer s = new StringBuffer("123456789");
 System.out.println(s.replace(1, 3, "dasdasfd"));//1dasdasfd456789
 System.out.println(s.reverse());//987654dfsadsad1
System.out.println(s.delete(3, 100));//删除为什么不会越界》?而取子字符口串为会么又会越界?
System.out.println(s.substring(2, 14));

37.
double d =12.345;
System.out.printf("|%7.8f| \n", d); //格式化输出:|12.34500000|

38.
调用内部类:
public class Test01 {

 /**
  * @param args
  */
    public class Count {
           private int serialNumber;
           public int counter = 0;
           public Count() {
             counter++;
             serialNumber = counter;
             System.out.println(serialNumber);
           }
         }
   // Count co = new Count();

 public static void main(String[] args) {
  // TODO Auto-generated method stub  
  Test01 test=new Test01();  
  Test01.Count count= test.new Count();//调用内部类《重要》

39.
static方法可以用类名而不是引用来访问,如:
public class GeneralFunction {
             public static int addUp(int x, int y) {
               return x + y;
             }
           }
           public class UseGeneral {
             public void method() {
               int a = 9;
               int b = 10;
               int c = GeneralFunction.addUp(a, b);
               System.out.println("addUp() gives " + c);
             }
           }
注-非静态变量只限于实例,并只能通过实例引用被访问。
   Main()是静态的,因为它必须在任何实例化发生前被顺序地访问,以便应用程序的运行。
    静态方法不能被覆盖成非静态。
 
40.
多线程:
注意:start()方法的调用后并不是立即执行多线程代码,而是使得该线程变为可运行态(Runnable),什

么时候运行是由操作系统决定的。从
程序运行的结果可以发现,多线程程序是乱序执行。因此,只有乱序执行的代码才有必要设计为多线程。
Thread.sleep()方法调用目的是不让当前线程独自霸占该进程所获取的CPU资源,以留出一定时间给其他

线程执行的机会。
实际上所有的多线程代码执行顺序都是不确定的,每次执行的结果都是随机的。
[调用线程对象的run方法不会产生一个新的线程],

41.

线程四状态(new,Runnable,runing,Blocked[阻塞])
1、新建状态(New):新创建了一个线程对象。
2、就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于

可运行线程池中,变得可运行,等待获取CPU的使用权。
3、运行状态(Running):就绪状态的线程获取了CPU,执行程序代码。
4、阻塞状态(Blocked):阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行。直到线程进入就

绪状态,才有机会转到运行状态。

42.
interface关键字用来声明一个接口,它可以产生一个完全抽象的类,并且不提供任何具体实现。

interface的特性整理如下:

1.        接口中的方法可以有参数列表和返回类型,但不能有任何方法体。

2.        接口中可以包含字段,但是会被隐式的声明为static和final。

3.        接口中的字段只是被存储在该接口的静态存储区域内,而不属于该接口。

4.        接口中的方法可以被声明为public或不声明,但结果都会按照public类型处理。

5.        当实现一个接口时,需要将被定义的方法声明为public类型的,否则为默认访问类型,Java编

译器不允许这种情况。

6.        如果没有实现接口中所有方法,那么创建的仍然是一个接口。

7.        扩展一个接口来生成新的接口应使用关键字extends,实现一个接口使用implements。

43.
java命名规范:Sun 推荐的命名规范

1 ,类名要首字母大写,后面的单词首字母大写

2 ,方法名的第一个单词小写,后面的单词首字母大写

3 ,变量名的第一个单词小写,后面的单词首字母大写

44。
28、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
    short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)
short s1 = 1; s1 += 1;(可以正确编译)

String s = new String("xyz");创建了几个String Object?
    两个

44。
List, Set, Map是否继承自Collection接口?
    List,Set是,Map不是
List 以特定次序来持有元素,可有重复元素。Set 无法拥有重复元素,内部排序。Map 保存key-value值

,value可多值。

45。
abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
    都不能

46。
 Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等

47。
 switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、

short、 char 或者 byte。long,string 都不能作用于swtich。

48。
Java 编程语言只有值传递参数

49。
简述synchronized和java.util.concurrent.locks.Lock的异同?
主要相同点:Lock能完成synchronized所实现的所有功能
主要不同点:Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释放锁,而

Lock一定要求程序员手工释放,并且必须在finally从句中释放。

50。
Anonymous Inner Class (匿名内部类)可以继承其他类或完成其他接口,在swing编程中常用此方式。

51.char 是 16位的
int是 32位的
他们都属于整形
整形包括
char byte int long这些
遇到运算的时候byte,char 可以自动转换成int
而int不会转换成char byte ,除非强制类型转换

52.
Java中的集合(Collection)有两类,一类是List,再有一类是Set。list集合内的元素是有序的,元素

<<可以重复>>;set元素无序,但元素不可重复。
Java对于eqauls方法和hashCode方法是这样规定的:
1、如果两个对象相同,那么它们的hashCode值一定要相同;《<重点>》
2、如果两个对象的hashCode相同,它们并不一定相同

53.
  <<<<<<<<<<<古典问题:>>>>>>>>>>>>
* 兔子问题
  */
 //一对兔子 3个月或每生1对,小兔子长到3个月又生1对,假如兔子不死,第10个月有多少对?
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  int m=1,n=1,tmpN;//声明3个变量(int类型的 )
  for(int month=3;month<=10;month++){
  tmpN=n;//让tmpN=n,也就是1
  n=m+n;//然后让m和n相加,既n=1+1=2;
  m=tmpN;//然后再把tmp的值1付给m,既m=2
  } //继续循环
  System.out.println(n);

3.古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生

一对兔子,假如兔子都不死,问前20个月内每个月的兔子总数为多少?
public class three {
 public static void main(String[] args){
  long f1,f2;
  int i;
  f1=f2=1;
  for(i=1;i<=20;i++) {
   System.out.println(f1+"\t\t"+f2);
      ____f1=f1+f2;________
      ___f2=f1+f2;_________
  }
 }
}


54.
文件输入:Scanner  《《《《《注意》》》》》
Scanner str1 = new Scanner(System.in);
double mach1 =str1.nextDouble();//读入一double类文件,其还有很多方法
BufferedReader brd = new BufferedReader(new InputStreamReader(System.in));
str = brd.readLine();
mach = Double.parseDouble(str);

/*//方法2 double mach1
* Scanner str1 = new Scanner(System.in);
 * =str1.nextDouble(); mach =mach1;
 */

55.
一年每月天数:
1、3、5、7、8、10、12月每月31天
2月闰年29天,不是闰年就是28天。
其他的月份就是三十天每月。
闰年366,不是闰年365 。
 区别就是二月的天数、

56.
JAVA字符串分割的两种方法–split和StringTokenizer:《《《重要》》》
●利用split函数:
String s = new String("2_8_7_4_3_9_1");
String[] arr = s.split("_");

●利用StringTokenizer类:
String s = new String("2_8_7_4_3_9_1");
StringTokenizer commaToker = new StringTokenizer(s, "_");
String[] arr = new String[commaToker.count

57.
数组排序(快速取最大最小值)  《《《重要》》》
java.util.Arrays.sort(arrayName);//数组排序用得好

58.
无限循环与指定读入数据   《《《重要》》》
Scanner sc = new Scanner(System.in);//这里其实很简单的,Scanner.nextInt()它读入的只是一个

int type number
for(;;)//这是一个无限循环语句,很神奇的,要记得灵活运用它
{
System.out.println(sc.nextInt());
}

59.
byte[] data = new byte[26];
  System.out.println("input some chareaceters.");
  System.in.read(data);//System.in.read();只能读入int and byte[]如果要读入

其它的要通过字条流转换

60.
文件流操作:《《《重要》》》《《《重要》》》
       InputStream有6个低级输入流:
              低级流                                   流的用途
        ByteArrayInputStream                   从内存数组中读取数据字节
        FileInputStream                        从本地文件系统中读取数据字节
        PipedInputStream                       从线程管道中读取数据字节
        StringBufferInputStream                从字符串中读取数据字节
        SequenceInputStream                    从两个或多个低级流中读取数据字节,当到达流的

末尾时从一个流转到另一个流
        System.in                              从用户控制台读取数据字节

        InputStream还有一个子类:过滤器流java.io.FilterInputStream,过滤器流即能把基本流包

裹起来,提供更多方便的用法。                    
        FilterInputStream类的构造方法为FilterInputStream(InputStream),在指定的输入流之上

,创建一个输入流过滤器。
        FilterInputStream的常用的子类如下:
              过滤器输入流                            流的用途
        BufferedInputStream                    缓冲区对数据的访问,以提高效率
        DataInputStream                        从输入流中读取基本数据类型,如int、float、

double或者甚至一行文。
        LineNumberInputStream                  在翻译行结束符的基础上,维护一个计数器,该计

数器表明正在读取的是哪一行。
        PushbackInputStream                    允许把数据字节向后推到流的首部
       
        OutputStream(略)
        OutputStream的结构基本和InputStream是一样的。

2、字符流:
        Reader的常用的子类如下:
              低级读取器                              流的用途
        CharArrayReader                         从字符数组中读取数据
        InputStreamReader                       从输入流中读取数据,连接输入流于读取器
        FileReader(InputStreamReader的子类)   从本地文件系统中读取字符序列
        StringReader                            从字符串中读取字符序列(new StringReader

(String s))
        PipedReader                             从线程管道中读取字符序列

        常用的过滤器读取器:
              过滤器读取器                              流的用途
        BufferedReader                               缓冲数据的访问,以提高效率
        LineNumberReader(BufferedReader的子类)     维护一个计数器,该计数器表明正在读取的

是哪一行。
        FilterReader(抽象类)                       提供一个类创建过滤器时可以扩展这个类
        PushbackReader(FilterReader的子类)         允许把文本数据推回到读取器的流中
        这些过滤器读取器都可以传入一个Reader作为构造方法的参数。
       
        Writer的结构基本和Reader是一样的。
InputStreamReader/OutputStreamWriter是InputStream/OutputStream和Reader/Writer之间的桥梁

最后在解释下println方法和write方法的区别

println会向缓冲区输出内容,并在内容后输出一个换行符。将内容作为一行输出到另一端。write只是向

缓冲区输出内容。
没有换行符。而print方法则跟write一样,只是将null转换为字符串'null';

即:PrintWriter pw.wrtie(); 错误;要写成PrintWriter pw.write("");而PrintWriter

pw.println();正确!

writer.println("msg") == writer.write("msg"); + writer.write("\n") ;

如果用write()方法输出内容并flush后,用在IO的另一端用readline来读取内容,会阻塞IO、阻塞线程。
如果用println()方法输出内容并flush后,IO另一端的readline则会读到内容。

61.
 匿名的内部类是没有名字的内部类。不能extends(继承)其它类,但一个内部类可以作为一个接口,由另

一个内部类实现。

62.
abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?   都不能

63.
 String类是final类故不可以继承。

64.
说出ArrayList,Vector, LinkedList的存储性能和特性
ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,
如果元素的数目超出了内部数组目前的长度它们都需要扩展内部数组的长度,
Vector缺省情况下自动增长原来一倍的数组长度,ArrayList是原来的50%,它们都允许直接按序号索引元


,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了
synchronized同步方法保证线程安全,通常性能上较ArrayList差,而LinkedList使用双向链表实现存储


按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度

较快。


4.final, finally, finalize的区别。
  final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
finally是异常处理语句结构的一部分,表示总是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以
覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。


65.
    创建伪随机数  《《《重要》》》
Random rd=new Random();//创建一个伪随机数生成器
int card=rd.nextInt(13);//生成一个0到13之间的随机数

66.
集合与数组
Collection----一组独立的元素,通常这些元素都服从某种规则。List必须保持元素特定的顺序,而Set

不能有重复元素。
Map----一组成对的“键值对”对象,即其元素是成对的对象,最典型的应用就是数据字典

67.
 Java switch的各种可用类型测试(包括枚举enum)允许byte,short,int,char,enum等,但是String 是不

可以的《注意》
在Java语言中,不允许使用指针体现出的Java特性是______安全性
java.io包的File类是_字符流_____
进行Java 程序需要的工具软件所在的目录是_JDKr的bin目录__。

68.
Java 的核心包中,提供编程应用的基本类的包是__ Java.lang ___

69.
Java 命名规范: 《《《重要》》》
1.Java包的名字都是由小写单词组成。
2.类的名字必须由大写字母开头,一个单词中的其他字母均为小写。如果类名称由多个单词组成,则建议

将每个单词的首字母均用大写,例如TestPage。
3.方法的名字的第1个单词应以小写字母开头,后面的单词则建议用大写字母开头。例如:sendMessge()。
4.常量的名字应该都使用大写字母,并且指出该常量完整含义。如果一个常量名称由多个单词组成,则建

议用下划线来分割这些单词。例如:MAX_VALUE。
5.参数的命名规范和方法的命名规范相同,每个单词首字母大写

70.
进制转换与优先级问题:
public class Test2005{
      public static void main(String args[]){
        System.out.println(~(0xa5)&0xaa);//十六进制的和与非优先级(结果是:10)
      }
    }
/* ~(0xa5)&0xaa
    10*16^1+5*16^0 & 10*16^1+10*16^0
   ~(10100101) & 10101010
   =110100110&10101010
   =101011010&10101010
   =000001010
   =10*/

71.
   《《《重要》》》
Set s1 = new TreeSet();//Set是没有重复元素的集合
ArrayList<String> list = new ArrayList<String>();//创建一个可以动态添元素的集合
Arrays.sort(in);//数组排序
System.out.println(Arrays.binarySearch(in, 122));//二分法查找,前面參數是數組名,
  //后一參數為要查找的值,在查找前要先排序否則可能出現同一相數. k只有當找到值

里才
  //返回大于0的整數,否則返回負數

72.
char ch = 'y';  int i=ch;//right//in java char 通过引用可以自动转成int type因为这是低位转

到高位

73.
int  x=4;
System.out.println("value  is  "+ ((x>4) ? 99.9 :9));
//自动转换成高精度型

74.
File f = new File("E:\\test\\123.text");//File只能创建文件不能创建目录,即这里只能在已有的

文件
目录E:\\test下新建一个文件,而不能创建整个目录“E:\\test\\123.text”

75.
线程操作 《《《重要》》》《《《重要》》》
java.lang.Thread
线程的两种线程创建方法:
extends Thread//继承thread要重写thread的ran方法
implements Runnable//通过实现Runnable接口类的ran()方法

  thread 中的常用方法《《《重要》》》《《《重要》》》
1. static void yield()           暂停当前正在执行的线程对象,并执行其他线程。
 2. void setPriority(int newPriority)         更改线程的优先级。
 3. void join(long millis, int nanos)     等待该线程终止的时间最长为 millis 毫秒 +

nanos 纳秒。
4.  void join()          等待该线程终止。
5. void interrupt()          中断线程。
6. static boolean interrupted()     测试当前线程是否已经中断。
7.static void sleep(long millis, int nanos)
       //   在指定的毫秒数加指定的纳秒数内让当前正在执行的线程休眠(暂停执行)。
8. String toString()   返回该线程的字符串表示形式,包括线程名称、优先级和线程组。
9. void suspend()【挂起线程】    已过时。 该方法已经遭到反对
10.void resume()【恢复线程运行】已过时。 该方法已经遭到反对
11. static int activeCount()  返回当前线程的线程组中活动线程的数目。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值