欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVA的简单了解

程序员文章站 2024-03-18 11:30:40
...

  1. hello world
  2. 特性
  3. 名词
  4. 标识符
  5. 修饰符
  6. 变量
  7. 数组
  8. 枚举
  9. 关键字
  10. 注释
  11. 继承
  12. 接口
  13. 源文件声明规则
  14. 转义字符序列
  15. 自动类型转换
  16. 运算符
  17. 运算符优先级
  18. 结构

1. hello world


  • 文件名需与类名一致。如,HelloWorld.java
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}
  • javac:后跟java文件名,将java源文件编译为class字节码文件。如,javac HelloWorld.java
  • java:后跟类名,不要加.class。如,java HelloWorld

2. 特性


  • Java不使用指针,而是引用,提供自动的废料手机,程序猿不必为内存管理而担忧
  • 支持类之间的单继承,接口之间的多继承,支持类与接口之间的实现机制(implements),全面支持动态绑定
  • 支持Internet应用的开发
  • Java编译器用Java实现,java的运行环境用C实现
  • 线程必须由Thread类或其子(孙)类来创

3. 名词


  • 对象:类的一个实例,有状态和行为(如我,你)
    • 软件对象的状态就是属性,行为通过方法体现
    • 属于引用数据类型
  • :一个模板,描述一类对象(如男孩、女孩)
  • 方法:行为
    • 一个类可以有多个方法
    • 每个类都有构造方法,构造方法的名称必须与类同名
  • 实例变量:每个对象都有独特的实例变量
  • 大小写敏感
  • 类名:首字母大写,如MyFirstJavaClass
  • 方法名:小写字母开头,如myFirstMethod
  • 源文件名:必须和类名相同,加.java
  • 主方法入口:所有的Java程序由public static void main(String[] args)方法开始执行

4. 标识符


  • 以字母、美元符($)或下划线(_)开始
  • 首字符之后可以是数字
  • 关键字不能用作标识符
  • 大小写敏感

5. 修饰符


  • 访问控制修饰符
    • default(缺省):同一包内可见
    • protected:对同一包内的类和所有子类可见。不能修饰类
    • private:同一类内可见。不能修饰类。隐藏类的实现细节和保护类的数据。
    • public:对所有类可见
  • 非访问控制修饰符:
    • final
      • 修饰的方法可以被子类继承,但不能被继承类重新定义
      • 修饰的变量为常量,不可修改
      • final类不能被继承
    • abstract
      • 创建抽象类和抽象方法,为了将来对该类进行扩充
      • 抽象类不能用来实例化对象
      • 一个类不能同时被abstract和final修饰
      • 如果一个类包含抽象方法,那么该类一定要声明为抽象类
      • 抽象类可以包含抽象方法和非抽象方法
      • 抽象方法是一种没有任何实现的方法,具体实现由子类提供
      • 抽象方法不能被声明成final和static
      • 任何继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是抽象类
      • 抽象方法的声明以分号结尾,如 public abstract sample();
    • strictfp
    • static
      • 静态变量:也成类变量
      • 静态方法:不能使用类的非静态变量
    • synchronized:声明的方法同一时间只能被一个线程访问
    • transient:用来预处理类和变量的数据类型
    • volatile:修饰的成员变量发生变化时,会强制线程将变化值回写共享内存,在任何时刻,两个不同的线程总是看到某个成员变量的同一个值

6. 变量

  • 申请内存来储存值
  • 内存管理系统根据变量类型为变量分配储存空间,分配的空间只能用来储存该类型变量

  • 局部变量
    • 在方法、构造方法或语句块中定义
    • 变量声明和初始化都在方法中,方法结束后自动销毁
    • 没有默认值,必须初始化后才可使用
    • 不能用修饰符
  • 类变量(静态变量)
    • 在类中,方法体、构造方法之外
    • 必须声明为static类型
    • 无论一个类穿件多少对象,类只拥有一份拷贝
    • 程序开始时创建,程序结束时销毁
    • 大多数静态变量声明为public类型
    • public static final类型是建议使用大写字母
  • 成员变量(非静态变量)
    • 定义在类中,方法体之外
    • 在创建对象的时候实例化
    • 可以被类中方法、构造方法、特定类的语句块访问
    • 在对象创建时创建,在对象销毁时销毁
    • 一般把实例变量设为私有
    • 具有默认值
    • 可通过变量名访问,但在静态方法以及其他类中,使用完全限定名

7. 数组


  • 属于引用数据类型
  • 保存多个同类型变量
  • 数组的元素类型和数组的大小都是确定的,处理数组元素通常使用基本循环或foreach循环
  • 声明:dataType[] arrayRefVar
  • 创建数组:arrayRefVar = new dataType[arraySize]
  • 声明和创建一起:dataType[] arrayRefVar = new dataType[arraySize]
  • 还可以:dataType[] arrayRefVar = {value0, value1, ...}
  • 多维数组:type arrayName = new type[行数][列数]

8. 枚举


  • 限制变量只能是预先设定的值
  • 枚举可以单独声明或声明在类里面
class People {
    enum PeopleDepth{ DEEP, SHALLOW}
    PeopleDepth depth;
}

9. 关键字

  • 不能用于常量、变量和任何标识符的名称

  • 访问控制
    • private - 私有
    • protected - 受保护
    • public - 公共
  • 修饰符
    • abstract - 抽象
    • class - 类
    • extends - 继承
    • final - 最终值,不可改变
    • implements - 实现
    • interface - 接口
    • native - 本地(非Java实现)
    • new - 新建
    • static - 静态
    • strictfp - 严格精准
    • synchronized - 线程同步
    • transient - 短暂
    • volatile - 易失
  • 程序控制
    • break - 跳出循环
    • case - 定义一个值供switch选择
    • continue - 继续
    • default - 默认
    • do - 运行
    • else - 否则
    • for - 循环
    • if - 如果
    • instanceof - 实例
    • return - 返回
    • switch - 根据值选择执行
    • while - 循环
  • 错误处理
    • assert - 断言表达式是否为真
    • catch - 捕捉异常
    • finally - 有无异常都执行
    • throw - 抛出一个异常
    • throws - 声明一个异常可能被抛出
    • try - 捕捉异常

    • import - 引入
    • package - 包
  • 基本类型
    • boolean - 布尔型,1位,只有两个取值:true和false(默认值false)
    • byte - 8位、有符号,以二进制补码表示的整数(-128~127)
    • char - 一个单一的16位Unicode字符(\u0000~\uffff,即0~65535)
    • double - 64位,默认值0.0d
    • float - 32位,默认值0.0f
    • int - 32位,默认值为0
    • long - 64位,默认值为0L
    • short - 16位(-32768~32767)
    • null
  • 变量引用
    • super - 父类,超类
    • this - 本类
    • void - 无返回值
  • 保留关键字
    • goto
    • const

10. 注释


/*
 * 多行注释的示例
 * 多行注释的示例
 */
// 单行注释
/* 也是单行注释 */

11. 继承


  • 重用已存在类的方法和属性,不用重写代码。
  • 被继承的类成为超类(super class),派生类成为子类(subclass)。
  • 父类中声明为public的方法在子类中必须为public
  • 父类中声明为protected的方法在子类中要么声明为protected,要么public
  • 父类中声明为private的方法,不能被继承
  • final修饰的类不能被继承

12. 接口


  • 只定义派生要用到的方法,方法的具体实现完全取决于派生类。

13. 源文件声明规则


  • 一个源文件只能有一个public类,可以多个非public类
  • 源文件名称应该和public类的类名保持一致
  • 如果一个类定义在某个包中,那么package语句应该在源文件的首行
  • importy应该放在类定义之前,package语句之后

14. 转义字符序列


  • \n - 换行
  • \r - 回车
  • \f - 换页
  • \b - 退格
  • \0 - 空字符
  • \s - 字符串
  • \t - 制表符
  • \” - 双引号
  • \’ - 单引号
  • \ - 反斜杠
  • \ddd - 八进制字符
  • \uxxxx - 16进制Unicode字符

15. 自动类型转换


  • 转换从低级到高级 byte,short,char -> int -> long -> float -> double
  • 不能对布尔型进行类型转换
  • 高级转低级必须使用强制类型转换
  • 可能溢出或损失精度
  • 浮点数转整数,不是四舍五入,是舍弃小数

16. 运算符


  • 算术运算符
    • +
    • -
    • *
    • /
    • % - 取模
    • ++
  • 关系运算符(返回true或false)
    • ==
    • !=
    • >
    • <
    • >=
    • <=
  • 位运算符
    • & - 按位与
    • | - 按位或
    • ^ - 按位异或
    • ~ - 按位补
    • << - 按位左移
    • >> - 按位右移
  • 逻辑运算符
    • &&
    • ||
  • 赋值运算符
    • =
    • +=:加和赋值操作符
    • -=:减和
    • *=:乘和
    • /=:除和
    • (%)=:取模和
    • <<=:左移位赋值运算符
    • >>=:右移位
    • &=:按位与
    • ^=:按位异或
    • |=:按位或
  • 其他运算符
    • ?::条件运算符
    • instanceofvariable instanceof type

17. 运算符优先级


  • 优先级从高到低排序,其中关联性只有 一元、条件、赋值 是右到左,其他都是左到右
  • 后缀(() [] .)→一元(++ -- ! ~→乘性(* / %)→加性(+ -)→移位(>> <<)→关系(> >= < <=)→相等(== !=)→按位与(&)→按位异或(^)→按位或(|)→逻辑与(&&)→逻辑或(||)→条件(?:赋值(= += -= *= /= %= >>= <<= &= ^= |=→逗号(,

18. 结构


  • 顺序结构
  • 循环结构
    • while
    • do…while:至少执行一次
    • for
      • for(初始化;布尔表达式;更新)
      • for(声明语句 : 表达式)
  • 分支结构
    • if
    • if..else
    • if..else if…else
    • if…(if…else)else
    • switch:判断一个变量与一系列值中某个值是否相等
    switch(expression){
        case value :
            //语句
            break; //可选
        case value :
            //语句
            break; //可选
        default : //可选
            //语句
    }