Java 基础知识点

1. jdk版本

    我最后使用的jdk版本是1.8

2. 基本语法

(1) 大小写敏感

(2) 类名首字母大写

(3) 方法名首字母小写

(4) 源文件名必须和类名相同

(5) 主方法入口:所有的 Java 程序由 public static void main(String[] args) 方法开始执行

(6) Java是解释执行还是编译执行? 答: 采用的是解释和编译混合的模式。它首先将源码编译成字节码文件class, 然后通过解释器将字节码转换成机器码。

(7) 使用 javac 编译,java命令运行,例如:

$ javac Employee.java 
$ java Employee

3. 对象和类

(1) 一个源文件中只能有一个 public 类, 但可以有多个非public 类

(2) 源文件的名称应该和 public 类的类名保持一致

(3) package 语句 在源文件最前面,然后是 import 语句

4. 基本数据类型

(1) Java语言提供了八种基本类型, byte, short, int, long, float, double, boolean, char

(2) 其中六种数据类型都是有符号的。

(3) Long的写法例子: long a = 100000L 。 L 不区分大小写,为避免混淆一般写L

(4) float的写法例子 float f1 = 234.5f

(5) double的写法例子 double d1 = 8.0d

(6) char 类型是 16 位 Unicode 字符, 可以储存任何字符

(7) 在Java中,引用类型的变量非常类似于C/C++的指针。

例子:Site site = new Site("Runoob")。

对象、数组都是引用数据类型。

(8) final 关键字来修饰常量, final double PI = 3.1415927

(9) 当使用字面量的时候,前缀 0 表示 8 进制,而前缀 0x 代表 16 进制。

     int octal = 0144; int hexa = 0x64;

(10) 字符串和字符都可以包含任何 Unicode 字符, 例如:

     char a = '\u0001'; String a = "\u0001";

(11) 类型转换: 运算中,不同类型的数据先转化为同一类型,然后进行运算

     级别从低到高的顺序: byte,short,char—> int —> long—> float —> double

     把容量大的类型转换为容量小的类型时必须使用强制类型转换

     浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入

(12)  整数的默认类型是 int;   

       小数默认是 double 类型浮点型,在定义 float 类型时必须在数字后面跟上 f 

5. 变量类型

(1) 局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。

(2) 实例变量(即C++的成员变量),可以 声明 在使用前或者使用后。

     实例变量可以在声明时指定值,也可以在构造方法中指定值;

     实例变量可以直接通过变量名访问,不需要加 this.   但在静态方法中,要使用完全限定名,即:Obeject.VariableName 的形式

(3) 类变量也称为静态变量,在类中以 static 关键字声明

     无论一个类创建了多少个对象,类只拥有类变量(静态变量)的一份拷贝

     类变量(静态变量)储存在静态存储区,经常被声明为常量

     大多数静态变量声明为 public 类型, 使用大写字母

     静态变量可以通过:ClassName.VariableName的方式访问, 例如: Employee.DEPARTMENT

6. 修饰符

(1) private:  同一类可见

(2) default: 同一包中可见 

(3) public:  不同类中可见,不同包中可见

(4) protected: 同一包中可见, 不同包中的子类可见,但只能继承不能直接使用

(5) static: 

        用来声明独立于对象的 静态变量 和 静态方法,用 class.variable 和 class.method 访问

(6) final

        final 修饰的变量:等同于常量,通常和 static 修饰符一起使用来创建类常量。例子:public static final int BOXWIDTH = 6;

        final 修饰的方法:父类中的 final 方法可以被子类继承,但是不能被子类重写。

        final 修饰的类:不能被继承

(7) abstract

        abstract 修饰抽象类:抽象类不能实例化对象,唯一目的是为了将来对该类进行继承。

        abstract 修饰抽象方法: 抽象方法是一种没有任何实现的方法,具体实现由子类提供。

(8) synchronized

        synchronized 声明的方法同一时间只能被一个线程访问。

(9) transient

        序列化的对象包含被 transient 修饰的实例变量时,java 虚拟机(JVM)跳过该特定的变量。

(10) volatile

        volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该变量的值。

        当变量发生变化时,会强制线程将变化值回写到共享内存。

       在任何时刻,两个不同的线程总是看到某个变量的同一个值。

7. 运算符

     同样地包含以下运算符: %, ++, --, &&, || , &, |, ^(异或), !

     有一特别的: instanceof (检查该对象是否是一个特定类型(类类型或接口类型))

8. 循环结构

(1) while( 布尔表达式 ) { //循环内容 }

(2) do { //代码语句 }while(布尔表达式);

(3) for(初始化; 布尔表达式; 更新) { //代码语句 }

(4) for(声明语句 : 表达式) { //代码句子 },例如:for( String name : names ) { }

(5) 同样有  break, continue

9. 条件结构

    同样有   if(布尔表达式){ }else{ },  和  switch(表达式){ case 变量 : break;  default : }

10. Number & Math 类常用方法

(1) xxxValue(): 将 Number 对象转换为xxx数据类型的值并返回。

(2) valueOf(): 返回一个 Number 对象指定的内置数据类型, 例子:Double c = Double.valueOf(5);

(3) toString(): 以字符串形式返回值, 例子:Integer x = 5;  System.out.println(x.toString());

(4) parseInt(): 将字符串解析为int类型, 例子:int x =Integer.parseInt("9");

(5) abs(): 返回参数的绝对值。

(6) ceil(): 向上取整,类型为double。

(7) floor(): 向下取整, 类型为double。

(8) round(): 四舍五入,算法为 Math.floor(x+0.5),即将原来的数字加上 0.5 后再向下取整,所以,Math.round(11.5) = 12,Math.round(-11.5) = -11。

(9) min(): 返回两个参数中的最小值

(10) max():  返回两个参数中的最大值。

(11) random():  返回一个随机数。例子:System.out.println( Math.random() );

12. 转义字符

\t    在文中该处插入一个tab键
\n    在文中该处换行
\r    在文中该处插入回车
\'    在文中该处插入单引号
\"    在文中该处插入双引号
\\    在文中该处插入反斜杠

13. Character 类

      实际开发过程中,遇到需要使用对象,而不是char的情况时,可以使用Character类。Character类也提供了一些字符操作和判断的方法

14. String 类

(1) String 类是不可改变的,所以一旦创建了 String 对象,它的值就无法改变

如果需要对字符串做修改,那么应该选择使用 StringBuffer & StringBuilder 类

(2) String 类的静态方法 format() 能用来创建可复用的格式化字符串. 例如:

String.format("浮点型变量的值为 " + "%f, 整型变量的值为 " + " %d, 字符串变量的值为 " + " %s", floatVar, intVar, stringVar);

15. StringBuffer 和 StringBuilder 类

(1) string 不能被修改

(2) StringBuffer 能修改,线性安全,效率相对低

(3) StringBuilder 能修改,线性不安全,效率相对高

16. 数组

(1) 数组的创建:

dataType[] arrayRefVar = new dataType[arraySize]; 

或者: dataType[] arrayRefVar = {value0, value1, ..., valuek};

(2) 数组的访问

double[] myList = {1.9, 2.9, 3.4, 3.5};
for (int i = 1; i < myList.length; i++) {
        if (myList[i] > max) max = myList[i];

或者:

for(type element: array)
{
    System.out.println(element);
}

(3) 数组可以作为参数和返回值

public static int[] printArray( int[] array ) {

    return array;
}

(4) java支持多维数组

(5) Arrays 类: 提供一些便利的数组方法

fill:给数组赋值

sort:对数组排序

equals:比较数组

binarySearch:查找数组元素(二分查找法)

17. 日期时间

(1) java.util 包提供了 Date类 封装日期和时间

     使用当前时间:Date date = new Date();     

    使用指定时间戳:Date date = new Date(long millisec)  毫秒数

(2) Date类最主要方法:

    long getTime( ) 返回时间戳,毫秒数。

    String toString( ) 返回时间字符串

    before(),after() 和 equals():  比较两个时间的大小

(3) 使用 SimpleDateFormat 格式化日期

    SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");
    Date dNow = new Date( );
    System.out.println("当前时间为: " + ft.format(dNow));

(4) 使用 SimpleDateFormat 解析字符串为时间

    SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd"); 
    String input =  "1818-11-11" ; 
    Date t; 
    try { 
        t = ft.parse(input); 
    } catch (ParseException e) {}

(5) 休眠(sleep)

    Thread.sleep(毫秒数); 

(6) 获取当前毫秒数

    System.currentTimeMillis( );

(7) Calendar类: 可以更方便的设置和获取日期

18. 方法

(1) 可变参数 ... 

    public static void printMax( double... numbers) {
        for (int i = 1; i <  numbers.length; i++){
            System.out.println( numbers[i]);
        }
    }

(2) finalize() 方法: 

    Java 允许定义这样的方法,它在对象被垃圾收集器析构之前调用

    protected void finalize() { // 在这里终结代码 }

19. Java 流(Stream)、文件(File)和IO

(1) 读: 文件 => FileInputStream => InputStreamReader

      写: OutputStreamReader => FileOutputStream => 文件

(2) 字节流和字符流:

      FileInputStream 从文件读取字节,面向的是字节流,和字符编码无关。

      InputStreamReader 从字节流读取数据,面向的是字符流,处理字符编码的问题。

(3) Java中的文件和目录处理,通过java.io.File的以下方法完成:

      mkdir() 创建一个文件夹,

      mkdirs() 输入一个路径,创建整个路径的文件夹和文件。

      list() 提取包含的文件和文件夹的列表。

      isDirectory() 判断是不是目录

      delete() 删除文件

20. Scanner 类

      可以通过 Scanner 类来获取用户的输入.

      使用 hasNext 与 hasNextLine 判断是否还有输入的数据

       使用 next() 与 nextLine() 获取输入的字符串

        Scanner scan = new Scanner(System.in);
        if (scan.hasNextLine()) {
            String str2 = scan.nextLine();
        }

21. 异常处理

(1) 捕获异常例子,注意finally必定执行,可以用来回收资源。

try {
    file = new FileInputStream(fileName);
    x = (byte) file.read();
} catch(FileNotFoundException f) { //第一种异常
    f.printStackTrace();
    return -1;
} catch(IOException i) {    //第二种异常
    i.printStackTrace();
    return -1;
} finally{    //不管什么程序,最后必定执行
  // 程序代码
}

(2) 主动抛出异常:throw new RemoteException();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值