java 基础知识

 

1.         安装JDK5.0后,(J2SE5.0)后,可以使用printf()方法了。与C语言类似!

2.         注释有三种:单行注释,多行注释,归档注释。但多行注释不能嵌套。仔细分析就可知道!归档注释是一种专用注释;当它放在类或类成员声明之前时,javadoc工具可以提取出这些注释并用它们来生成程序的HTML文档。归档注释通常放在类、接口、方法及字段定义之前。归档注释中可以使用几组特殊标记以提供更为特定的信息。这种注释从/**开始,至*/结束。

3.         元数据类型值并不是对象。

a)         整型:

                         i.              有符号整数:byte8short16int32long64

                       ii.              无符号字符值:char16

b)        浮点型:float(32) double(64)

c)        布尔型:boolean(不可用)

4.         J2SE5.0中,可以使用java.util.Scanner类取得使用者的输入。

例:

import java.util.Scanner;

public class ScannerTest {

 public static void main(String[] args){

           Scanner scanner=new Scanner(System.in);

           System.out.print("please input your name:");

           System.out.printf("Hello! %s!",scanner.next());

    }

}

5.         也可以使用java.io.BufferedReader类输入一个中间有空格的字符串!
例:

import java.io.*;

 

public class BufferedReaderDemo {

 

    //public BufferedReaderDemo() {

    //}

    public static void main(String[] args) throws IOException{

           BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(System.in));

           System.out.print("please input a list words,can include blank:");

           String text=bufferedReader.readLine();

           System.out.println("Your words:"+text);

    }

}

6.         %n/n有什么不一样?  /nprint,println,printf中都是换行的作用。而%n只有在printf是换行的作用!

7.         区别throw ,throws

8.         区别printprintlnprintf:::

9.         输出格式控制:java.lang.IntegertoBinaryString()转为二进制-toHexString()转为十六进制-toOctalString()转为八进制

10.     输出格式转换字符:%d(十进制整数)%o(八进制)%x(十六进制)%n(换行)%f(十进制浮点数)%e%E(十进制浮点数科学记数法)%s%S(字符串格式化输出)%c%C(字符方式输出)%b%B(将truefalse输出)%t%T(输出日期/时间的前置)

11.     java中,一个中文字与一个英文字母都是用一个字符来表示。

12.     常数变量(A_B)即定义之后就不能再改变它的值了。用final关键词来限定!

13.     将精度大的值指定给精度小的变量时,精度有损失,是一个错误!!要对就要加上转换的限定符!如:testInteger=(int) testDouble ;

14.     “+” 这个连接符?可以用于字符串的串联。

15.     一个用位运算判断是否为奇数的好例子:

import java.util.Scanner;

 

public class bitwiseOperator {

 

    public static void main(String[] args)

    {

           Scanner scanner=new Scanner(System.in);

          

           System.out.println("please input digital:");

           int number=scanner.nextInt();

           //System.out.println("Is it a odd number?/n"+((number&1)!=0?"YES":"NO"));

           System.out.printf("Is it a odd number?%n"+((number&1)!=0?"YES":"NO"));

    }

}

原理:奇数的数值若以二进制来表示,其最右边的位必为1,而偶数最右边的位必为0.所以使用100000001)与输入的数做AND运算!结果可想而知!(自己分析!)

16.     二元移位运算符在构造新值时,会分别对这两个操作数运用一元数值升级。返回值的类型将是左侧操作数升级后的类型。

17.     移位距离的计算是对右侧操作数和一个掩码求AND:如果左侧操作数升级后的类型为int,则这个掩码为0x1f31);如果左侧操作数升级后的类型为long,则使用掩码0x3f63.

18.     也就是说,一个int型数45=45<<32=45>>32. int型的移位轮回为3100011111),而long型的移位轮回为6300111111.

19.     new运算符用于创建对象,对象也就是类实例或数组。

20.     二元布尔中缀运算符instanceof用于测试对象的类型。

21.     do{…………}while(条件式);注意这里是有分号的!

22.     break continue还可以配合标签使用。这是新的用法,可以学学!!下面用一个例子说明问题。

public class BreakTest {

 

   public static void main(String[] args)

   {

     back:

     {

            for(int i=0;i<10;i++)

            {

                   if(i==9)

                   {

                          System.out.println("break");

                          break back;

                   }    

            }

     System.out.println("test");

     }    

     System.out.println("success");

   }

}   

输出的结果为:break

                       success   

说明什么自己分析吧!System.out.println("test");也被break了。因为它在back中了。

 

例子2:(continue

public class ContiuneTest {

 

    public static void main(String[] args)

    {

           back1:

          

                  for(int i=0;i<10;i++)

                  {

                         back2:

                        

                                for(int j=0;j<10;j++)

                                {

                                       if(j==9)

                                       {

                                              continue back2;

                                       }

                                }

                        

                  System.out.println("test");

                  }

           System.out.println("success");

    }

}

这种情况下是System.out.println("test");将会被执行10次。还有一种情况是continue back1.这时 System.out.println("test");不会被执行!

23.     java中字符串就是对象。是java.lang.String类的一个实例。仔细想想看!!!

24.     基本数据(primitive)类型的自动装箱(autoboxing)、拆箱(unboxing)是J2SE5.0提供的新功能。

25.     由第3条可知,int/boolen/byte/short/char/long/float/double等基本数据类型不是对象。而对应的打包类型(wrapper typesInteger/Boolen/Byte/Short/Character/Long/Float/Double声明的变量是对象。

26.     看下面一个例子:

public class AutoBoxDemo2{

       public static void main(String[] args){

              Integer i1=100;

              Integer i2=100;

              if(i1==i2)

                     System.out.println("i1==i2");

              else

                     System.out.println("i1!=i2");

       }

}

输出结果为:i1==i2

public class AutoBoxDemo3{

       public static void main(String[] args){

              Integer i1=200;

              Integer i2=200;

              if(i1==i2)

                     System.out.println("i1==i2");

              else

                     System.out.println("i1!=i2");

       }

}

输出结果为:i1!=i2

原因:“==”是用来比较两个基本数据类型的变量值是否相等。事实上“==”也用于判断两个对象变量名称是否参考至同一个对象。

在自动装箱时对于值从-128127之间的值。它们被装箱为Integer对象后,会存在内存中被重用,所以第一种情况中使用==进行比较时,i1i2实际上参考至同一个对象。如果超过了从-128127之间的值。被装箱后的Integer对象并不会被重用。即相当于每次装箱时都新建了一个Integer对象,所以第二种情况使用==进行比较时,i1i2参考的是不同的对象。

所以不要过分信赖自动装箱与拆箱。必须知道基本数据类型与对象的差异。请看下面的一个例子:这样的写法可以放心一点,不是吗?

public class AutoBoxDemo3{

       public static void main(String[] args){

              Integer i1=200;

              Integer i2=200;

              if(i1.euqals(i2))

                     System.out.println("i1==i2");

              else

                     System.out.println("i1!=i2");

       }

}

输出结果为:i1==i2

27.     当定义一个数组时,也就是生成了一个数组对象,将数组当作对象 来操作,比传统上的一些程序语言只将数组当作数据群组多了不少好处。

28.     数组元素初始值:

数据类型

byte

short

int

long

float

double

char

boolean

初始值

0

0

0

0L

0.0f

0.0d

/u0000

false

 

29.     在存取数组元素时。如果指定的索引值超出数组范围时会发生:ArrayIndexOutOfBoundsException异常。如果不处理这个异常,程序将会终止。

30.     在二维数组中的length的意义:数组名后直接加上lengtharr.length)所指的是有几行(Row);指定索引后加上lengtharr[0].length)所指的是该行所拥有的元素,也就是列(Column)数目。

31.     不规则数组:每个维度的长度可以不相同的数组。(java中存在不规则数组。)

32.     java中。“=“运算用于基本数据类型时,是将值复制给变量,但当它用于对象时,则是将对象指定给参考引用名称来参考引用。

33.     J2SE 5.0新增了foreach语法:foreach语法如下:

For(type element : array)

{

       System.out.println(element).............

}

每一次从array中取出的元素,会自动设定给element,您不用自行判断是否超出了数组的长度,注意element的类型必须与数组元素的类型相同。

下面的例子是一个二维数组的例子。

public class ForeachTest

{

       public static void main(String[] args)

       {

              int [][]  arr ={{1,2,3},{4,5,6},{7,8,9}};

              for(int[ ]  row : arr)

              {

                     for(int element : row)

                     {

                            System.out.print(element);

                     }

              }

       }

}

34.     字条串的本质是(char)类型的数组,在java中则将字符串视为String类的一个实例,也就是将其视为存在于程序之中的对象。

35.     注意字符串的直接指定必须使用““来包括文字,字符串的每个字符是使用Unicode字符来构建的。

36.     将字符串分解为数值类型:

方法

说明

Byte.parseByte()

将字符串分解为位

Short.parseShort()

将字符串分解为short整数

Integer.parseInteger()

将字符串分解为int整数

Long.parseLong()

将字符串分解为long整数

Float.parseFloat()

将字符串分解为float整数

Double.parseDouble()

将字符串分解为double整数

 

 

 

 

 

 

 

 

 

 

37.     如果字符串无法分解为指定的数据类型数值。则会发生NumberFormatException异常。

38.     基本数据类型的声明方式声明字符串:String str=”caterpillar”;

配置对象的声明方式声明字符串:    String str=new String(“caterpillar”);

39.     java中,一个字符串对象一旦被配置,它的内容就是固定不可变的。

40.     看这个例子:

public class TrueTest{

       public static void main(String[] args){

              //Integer i1=200;

              //Integer i2=200;

              String i1="string";

              String i2="string";

              String i3=new String("string");

              String i4=new String("string");

              /*if(i1==i2)

                     System.out.println("i1==i2");

              else

                     System.out.println("i1!=i2");

                     */

              System.out.println(i1==i2);   //true

              System.out.println(i3==i4);   //false

              //System.out.println(i1+i2);

       }

}

为什么会这样呢?

java中,使用“=”将一个字符串对象指定给一个变量名称,其意义为改变该名称所引用的对象,原来被引用的字符串对象若没有其他名称来引用它,就会在适当的时候被java的“垃圾回收”(GARBAGE COLLECTION)机制回收。

这是显示了<38>中两种声明方式的不同。日后仔细考虑一下。

41.     “+”(串联字符串)会产生一个新的string实例。

42.     +”没有StringBuilder中的append方法效率高。

43.     在编写主程序时,在main()的参数中编写String[] args,目的就是用来接受一个字符串数组。

44.     eclipse中,怎样运行带参数的程序。——这个我知道了!

45.     分离字符串: String split()函数。

46.      正则表达式(Regular Expression)相关信息在:java.util.regex.Pattern类中。

47.     正则表达式中字符对比符号:

方法

说明

.

符合任一字符

/d

符合0---9任一个数字字符

/D

符合0---9以外的字符

/s

符合/t,/n,/x0B,/f,/r等空格符

/w

符合a---z,A---Z,0---9等字符,也就是数字或是字母都符合

/W

符合a---z,A---Z,0---9等之外的字符,也就是除数字与字母外都符合

48.     正则表达式中字符类范例:

范例

作用

[abc]

符合abc

[^abc]

符合abc之外的字符

[a-zA-Z]

符合a—z或者是A-Z的字符

[a-d[m-p]]

a—d或者是m—p,也可以是[a-dm-p]

[a-z&&[def]]

a—z并且是def,结果就是def可以符合

[a-z&&[^bc]]

a—z并且不是bc

[a-z&&[^m-p]]

a—z并且不是m—p

49.     指定一个字符之外,也可以加上“贪婪量词”(Greedy Quantifiers)来指定字符可能出现的次数。下面是Greedy Quantifiers table

范例

作用

X?

X可出现一次或完全没有

X*

X可出现零次或多次

X+

X可出现一次或多次

X{n}

X可出现n

X{n,}

X可出现至少n

X{n,m}

X可出现至少n次,但不超过m

50.     正则表达式的设计是一门学问。现在没有必要过多的学习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值