Java自学笔记(一):基础知识

学习网站:https://www.runoob.com/java/java-tutorial.html

目录

第一个Java程序

public class HelloWorld {   //类名必须与文件名相同
    public static void main(String[] args) {
       System.out.println("HelloWorld");
    }
}

基本概念

java是面对对象语言

  1. 类,包含状态和行为
  2. 对象,类的一个实例
  3. 实例变量
  4. 方法,就是动作
  5. 继承,类A继承类B中原有的属性和方法,也即B派生A。被继承的称为超类(super class);继承的称为子类(subclass)
  6. 接口
  7. 重写(Override)与重载(Overload)
  8. 多态
  9. 抽象类
  10. 封装

知识点或注意事项

  1. 类名第一个字母是大写,方法名的第一个字母是小写
  2. 主方法入口:每个程序都是以public static void main(String[] args)开始运行的
  3. String而非string
  4. 函数体后面不加分号
  5. 一个源文件只能有一个public类,可以有多个非public类。public类名必须与源文件的名字一致。源文件开头一行是package名。如果要用到import语句,应该放在package名后面
  6. 顺序:java project->package->class;package对各个class进行归类,引入package用import
  7. &或|或~是位运算符;&&或||或!是逻辑运算符
  8. instanceof:该运算符用于操作对象实例,检查该对象是否是一个特定类型

基本语法

  1. 修饰符,修饰类中方法和属性

    • 访问控制修饰符 : default, public , protected, private
    • default:默认态,在定义时若没有特指访问控制,则默认是default,不能跨package
    • public:公共态,可跨class也可跨package
    • protected:受保护态,对同一包内的类和所有子类可见。只能被类本身以及子类访问,如果子类在别的package也是可以访问的
    • private:私有态,只能被自身的class访问,不能跨class和跨package
    • 非访问控制修饰符 : final, abstract, static, synchronized
    • static 修饰符,用来修饰类方法和类变量。修饰变量:用来声明独立于对象的静态变量;修饰方法:静态方法不能使用类的非静态变量
    • final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
    • abstract 修饰符,用来创建抽象类和抽象方法;声明抽象类的唯一目的是为了将来对该类进行扩充。
    • synchronized 和 volatile 修饰符,主要用于线程的编程。
  2. 变量(注意,变量使用之前需要声明,不同于python)

    • 局部变量,块内的临时变量
    • 类变量(静态变量),类变量在类中,方法体之外,但必须声明为 static 类型,大多数是public类型;无论一个类创建了多少个对象,类只拥有类变量的一份拷贝,且
    • 成员/实例变量(非静态变量),定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化;一般情况下一般把该变量设为private,设定方法来访问它
  3. 注释

单行注释:
\\注释文字
\* 注释文字 *\
多行注释:
\*注
释
文
字*\
  1. 基本数据类型
    • 内置数据类型:byte, short, int, long, float, double, boolean, char
    • 引用数据类型:类似指针,默认值null,比如可以用来指向一个对象
    • 常量:final+常量定义,最好用大写来与变量区分;数字前缀0表示八进制,0x表示十六进制
    • 数据类型转换:自动或强制类型转换
自动类型转换:
低  ------------------------------------>  高
byte,short,char—> int —> long—> float —> double 
强制类型转换:
doubel a = 1.23;
int b = (int)a;
//b=1;
  1. 循环结构
    • while(xxx)
    • do{ } while(xxx)
    • for(xxx) { } 或 for (x: [1,2,3])
    • break; continue
  2. 其他语句结构:if,else; switch,case;
  3. 流(Stream)、文件(File)和IO(这些还没细看,用的时候再看)

Java内置包装类

Java内置包装类(类中也内置了很多方法;import java.util.*;)
- Number类
- Math类
- Character类
- String类;长度:a.length();连接字符串:a.concat(b)
- StringBuffer和StringBuilder类:对字符串进行修改
- Data类,表示时间;更复杂的是Calendar类
- Scanner类:输入类
-。。。

Data类:
long start = System.currentTimeMillis( );
long end = System.currentTimeMillis( );
long diff = end - start;
System.out.println("Difference is : " + diff);
Scanner类:
Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用 hasNext 与 hasNextLine 判断是否还有输入的数据:

import java.util.Scanner; 
public class ScannerDemo {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        // 从键盘接收数据
 
        // next方式接收字符串
        System.out.println("next方式接收:");
        // 判断是否还有输入
        if (scan.hasNext()) {
            String str1 = scan.next();
            System.out.println("输入的数据为:" + str1);
        }
        scan.close();
    }
}

数组

  1. 声明定义
一维:
int[] a = new int[3];  //首选int[] a格式,而不是int a[]格式
int a[] = new int[3];
int[] a = (1,2,3);
二维:
double[][] a1 = new double[2][2];
  1. 赋值
  2. 循环
    • 普通循环
    • for-each
for(int x:a)
   {x...}
  1. 数组作为函数参数
f(int[] array){ }
  1. 数组类:Arrays,方便操作数组

异常处理

需要的时候再看

枚举

  1. 定义:枚举(enum)是一个特殊的类,一般包含一组常量(和若干方法),其中构造方法只能是private。
enum Color
{
    RED, GREEN, BLUE;
}
public class Test
{
    // 执行输出结果
    public static void main(String[] args)
    {
        Color c1 = Color.RED;
        System.out.println(c1);
    }
}
  1. 迭代枚举元素
for (Color myVar : Color.values()) {
      System.out.println(myVar);
    }
  1. 内置方法 values(), ordinal() 和 valueOf()
posted on 2020-07-19 21:06  pipony  阅读(169)  评论(0)    收藏  举报