2091 字
10 分钟
JAVA笔记(旧)
2022-07-08

基础语法#

注释#

  1. 单行注释:只能注释一行文字。用法:// + 注释
  2. 多行注释:能注释一段文字。用法:/+ 内容 +/
  3. 文档注释:javaDoc.用法:/** + 内容 + */

标识符和关键字#

截图 标识符是大小写敏感的。

数据类型#

截图 定义字符串用String,它是一个类。

数据类型扩展#

整数拓展#

进制 二进制0b 十进制0 八进制 十六进制0x

int i = 10;
int i1 = 010;
int i2 = 0x10;
System.out.println(i);
System.out.println(i1);
System.out.println(i2);

截图

浮点数拓展#

flout double 少用浮点数进行比较 浮点数有舍入误差 结果为大约数 截图 截图

字符拓展#

涉及编码问题 Unicode编码 占两个字节 97=a 65=A 表示范围 U0000-UFFFF 截图 截图

转义字符#

  1. \t 制表符
  2. \n 换行 截图 截图

布尔值扩展#

刚开始用第一种 熟悉了用第二种

boolean home = true;
    if (home==true){
        System.out.println("======================================");
    }//第一种
    if (home){
        System.out.println("======================================");
    }//第二种

代码要精简易读。

类型转换#

低————————高 byte->short->char->int->long->float->double

  1. 值的大小超出数据类型所规定的范围会数据溢出。
  2. 强制转换 (类型)变量名 高————低
  3. 自动转换 变量名 低————高

注意点#

  1. 不能对布尔值进行转换
  2. 不能把类型转换为不相干的类型
  3. 在把高容量转向低容量的时候强制转换
  4. 转换时可能存在内存溢出或精度问题 jdk7新特性,数字间可加下划线

变量#

定义:可以变化的量 三要素:变量名,变量类型,作用域。

注意#

  1. 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
  2. 变量名必须是合法标识符。
  3. 变量声明必须是完整的语句,每个声明结尾要以分号结束。

变量作用域#

关键词:static

  1. 类变量 截图

  2. 实例变量(在类里面,方法外面。变量类型,变量名字)截图

  3. 局部变量(在方法里面,必须声明和初始化值)截图

  4. 变量初始值为0,0.0,0000 布尔值初始值为false 除了基本类型,其余值都为null

常量#

final 常量+值

命名规范#

  1. 所有变量,方法,类名,见名知意
  2. 类成员变量:首字母小写,驼峰原则。除了第一个单词意外,后面的单词首字母大写
  3. 局部变量:同类成员变量
  4. 常量:大写字母和下划线
  5. 类名:首字母大写,驼峰原则
  6. 方法名:同类成员变量。

运算符#

算术:+ - / ++ — 赋值:= 关系:> < == >= <= != instanceof 逻辑运算符:&& || ! 位运算符:& | ^ ~ >> << >>> (了解) 条件:? : 扩展运算:+= -== /= ctrl+d:复制当前行到下一行。 计算时有long型,结果为long型 没有其余为int类型。 cast:转换 取余,也叫模运算。 a++:先输出a,再自增1 ++a:先加一再输出a

Java doc#

  1. @author 作者名
  2. @version 版本号
  3. @since 指明需要最早使用的jdk版本
  4. @param 参数名
  5. @return 返回值情况
  6. @throws 异常抛出情况

流程控制#

  1. 用户交互Scanner
    1. 类名 java.util.Scanner
next()
nextLine()
//获取输入字符串
hasNext()
hasNextLine()
//判断是否还有输入数据
  1. 数组
    1. 声明一个数组
      例:int[] nums;
    2. 创建一个数组
      例:nums = new int[10]; (中括号里是数组的大小数量)
    3. 获取数组的长度
      例:nums.length

内存#

#

  1. 存放new的对象和数组
  2. 可以被所有线程共享,不会存放别的对象引用

#

  1. 存放基本变量类型(也包含这个基本类型的数值)
  2. 引用对象的变量(会存放这个引用在堆里面的具体地址)

方法区#

  1. 可以被所有线程共享
  2. 包含了所有的class和static变量

错误#

  1. ArrayIndexOutOfBoundsException:(数组下标越界异常)

数组三种初始化状态#

  1. 静态初始化 int[] a={1,5,2,4,6,3}; 一旦创建长度跟括号内元素个数有关,且确定。
  2. 动态初始化 int[] a=new int[10]; a[1]=8; a[2]=2;
  3. 数组的默认初始化 初始化值为0;

数组四个基本特点#

基本特点

  1. 其长度是确定的。数组一旦被创建,它的大小就不可以被改变。
  2. 其元素必须是相同类型,不允许出现混合类型。
  3. 数组中的元素可以是任意数据类型,包括基本类型和引用类型。
  4. 数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。

小结#

  1. 数组是相同数据类型(数据类型可以为任意类型)的有序集合。
  2. 数组也是对象,数组元素相当于对象的成员变量
  3. 数组长度是确定的,是不可改变的。如果越界,则报错:ArrayIndexOutOfBoundsException:(数组下标越界异常 )。

面向对象#

初识面向对象#

  1. 物以类聚,分类的思维模式
  2. 属性+方法=类 对于描述复杂的事物,为了从宏观上把握,从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,仍然需要面向过程的思路去处理。

什么是面向对象#

  1. 面向对象编程(oop)
  2. 本质:以类的方式组织代码,以对象的组织(封装)数据
  3. 抽象(类似提取)
  4. 三大特性
    1. 封装
    2. 继承
    3. 多态
  5. 从认识来考虑,先有对象后有类
  6. 从代码运行考虑,先有类后有对象

类与对象的关系#

  类是一种抽象的数据类型,它是对某一类事物整体描述或定义,但是并不能代表某一个具体的事物   对象是抽象概念的具体实例

创建与初始化#

  1. 使用new关键字船创建对象的时候,除了分配内存空间,还会给创建好的对象进行默认的初始化以及对类中构造器的调用
  2. 构造器特点:
    1. 必须和类名字相同
    2. 必须没有返回类型,也不能写void
  3. 构造器的两个作用
    1. 使用new关键字,本质是在调用构造器
    2. 有参构造:一旦定义有参构造,无参就必须显示定义

定义了有参构造,如果想使用无参构造,显示的定义一个无参的构造。

创建对象内存分析#

内存图: 内存

小结:类与对象#

  1. 类是一个模板,抽象,对象是一个具体的实例。
  2. 方法,定义,调用
  3. 对应的引用:
    • 引用类型:基本类型(8)
    • 对象是通过引用来操作的:栈----》堆
  4. 属性:字段,成员变量。
    • 默认初始化:
    • 数字:0
    • char:u0000
    • boolean
    • 引用:null
    • 赋值:
    • 修饰符 属性类型 属性名=属性值
  5. 对象的创建和使用
    • 必须使用new关键字创造对象 构造器
    • 对象的属性
    • 对象的方法
    • 静态的属性 属性
    • 动态的行为 方法

封装#

  1. 该露的露该藏的藏
    程序设计要求“高内聚,低耦合”。高内聚指类的内部数据操作细节自己完成,不允许外部干涉;低耦合指尽暴露少量的方法给外部使用。
  2. 封装(数据的隐藏)
    通常,应禁止直接访问一个对象中数据的直接表示,而应通过操作接口来访问,这称为信息隐藏
    相关关键字:private(私有)
    set(赋值) get(获得)

封装的作用#

  1. 提高程序安全性,保护数据。
  2. 隐藏代码的实现细节
  3. 统一接口
  4. 增加系统可维护

一句话:属性私有 get/set

继承#

super注意点:

  1. super调用父类的构造方法,必须在构造方法的第一个
  2. super必须只能出现在子类的方法或者构造方法中
  3. super和this不能同时调用构造方法

与this的区别:
  代表的对象不同 :
    this:本身调用这个对象
    super:代表父类对象的运用
  前提
    this:没有继承也可以使用
    super:只能在继承条件下使用
  构造方法
    this():本类的构造
    super():父类的构造

JAVA笔记(旧)
https://lym0518.cn/posts/javaold/
作者
TeFantasy
发布于
2022-07-08
许可协议
CC BY-NC-SA 4.0