- Java概述
- 软件开发
- 软件: 一系列按照特定顺序组织的计算机数据和指令的集合
- 开发软件: 指通过指令处理计算机数据常见的软件
- 系统软件: 操作系统 windows MacOS Linux
- 应用软件: QQ 微信 LOL 王者荣耀
- 开发: 软件的制作
- 人机交互
- 人与计算机之间的交互 (软件的出现)
- 人机交互的方式
- 图形化界面: 易上手 易操作
- 命令行交互方式: 较难操作, 需要控制台, 输入相应的指令, 使计算机根据指令完成操作
- Java
- SUN公司 Stanford University Network斯坦福大学网络公司1995年推出的一门高级编程语言
- JavaSE 标准版- 开发基础
- JavaEE 企业版- web方向的网站程序
- JavaME 小型版- 小型电子消费产品
- jdk5.0之前 叫J2se J2ee J2me
- 虚拟机跨平台 JVM
- Java语言拥有自己独立的Java语言解析器: Java虚拟机 JVM (Java Virtual Machine)
- 原理: 在需要要运行Java程序的操作系统中安装对应的Java虚拟机, 通过Java虚拟机执行Java程序
- Java虚拟机不能跨平台
- Java运行环境 JRE
- Java Runtime Environment 包含Java虚拟机
- Java开发工具包 JDK
- DOS命令
- 常用的DOS命令
- dir 列出当前目录下的子目录以及文件
- md 文件夹名称 创建对应的文件夹
- rd 文件夹名称 删除对应的文件夹(只能删除空文件夹)
- cd 目录 进入指定目录
- cd.. 返回上一级目录
- cd/ 返回根目录
- cls 清除控制台指令
- c: 切换C盘符 c:\>e: 从c盘进入e盘 (盘符不区分大小写)
- exit 退出控制台
- 运行Java程序
- javac 源程序名.java 编译 将java文件编译成.class文件
- java 文件名 运行程序
- 面向对象
- eclipse 集成开发工具
- 数据类型
- 计算机存储数据的方式: 二进制 (开关原理)
- 单位: 最小单位 比特 bit 位 (0或1)
- 1B = 8b 1KB = 1024B 1MB = 1024KB PB DB...
- 基本数据类型
- byte 字节整型 (1B)
最大 0111 1111 → 127 最小 1000 0000 → -128
- short 短整型 (2B)
- int 整型 (4B)
- long 长整型 (8B)
- float 单精度浮点型 (4B)
- double 双精度浮点型 (8B)
- boolean 布尔值类型 (1bit) 只有true或false
- char 字符型 (2B) 用单引号包含的单个符号
- 类型转换: 基本类型可以相互转换
- boolean不能转换成其他类型
- 自动类型转换: 小类型会自动转换为大类型
byte→ short→ int→ long→ float→ double (byte short char之间计算不会相互转换, 先转换成int)
- 强制类型转换: 大类型转换成小类型
只要数值不超过小类型的范围上限, 即可将整型直接赋值给byte short char
- int a = 10;
- byte b = (byte)a;
- 引用类型
- 变量: 基本单元、内存中的一块区域
- null表示不指向任何地方
- 变量名需要是合法的标识符 且不可重复
- 标识符
- 必须以字母/ 数字/ 下划线/ $符号构成
- 不能以数字开头 不能与关键字重名
- 强类型语言: 区分大小写
- 见名知意 驼峰命名法
- 方法中使用变量的前提是此变量有初始值
- 运算
- 运算符优先级
- 赋值操作 a += b a = a + b
- 算数运算符 + - * / ++自增 --自减 %取余
- 比较操作 a >= b 结果表示一个布尔值true/false
- 逻辑运算 x>3 && x<6 (同时满足) 结果表示布尔值
- 位运算 返回0或1 0表示假 1表示真
- 位运算符 & | && || ^ ~取反 <<按位左移 >>按位右移 >>>无符号位右移
- 除了>>> 其余的运算都包含符号位
- 字符串连接运算符 +
- 三目运算
- int a = 10;
- int b = a < 5 ? 10 : 20;
- (b = 20)
- 转义字符 \
- 改变后边字母或符号的含义
- \b 退格键 backspace
- \n Linux系统表示换行
- \r\n windows表示换行 回车键
- \t 制表符 tab键
- 控制运算符优先级时, 应用小括号控制
- 内存结构
- 栈 存放局部变量 执行完后会被立即释放
- 堆 存放对象实例 执行完不会被立即释放 存在GC垃圾回收器处理无用的对象
- 堆中的对象 都有首地址 用于给栈中的引用变量赋值
- int[] arr = new int[3];
- 栈 堆
- 方法区
- 本地方法区
- 寄存器
- 方法
- 参数 返回值
- 方法重载OverLoad: 函数名一样 函数的形参不一样的
- 方法中只能调用方法 书写的方法应该与main平级
- main方法 不用调用 JVM会直接调用并执行, 并作为程序入口
- 控制语句
- if(){ }if else(){ }else{ }
- switch(){ case 1: ... case 2: ... default: ... }
- for(初始化 ;条件表达式 ;后序操作 ){循环体}
- while(条件表达式){循环体}
- do{}while() 先运行一遍 后序判断while()中表达式
- break 跳出当前循环 可以配合标记跳出多层循环
- continue 仅用于循环结构 跳过本次循环继续下一次循环
- 数组
- 定义
- int[] arr = new int[3]; 初始化都是0
- int[] arr = new int[]{1,2,3};
- int[] arr = {1, 2, 3};
- 初始化数组时各类型默认值
- 整型 0
- 浮点 0.0
- 布尔型 false
- 字符型 '\u0000' 或 □
- 定长且连续 存在数组下标 自动编号
- 异常
- ArrayIndexOfBoundsException 访问数组中不存在的角标时,出现此错误提示
- NullPointerException 当数组引用变量赋值为null时,还使用该引用变量操作数组
- 遍历
- 普通for循环
- 增强for循环 for(String str: arr){System.out,print(str); }
- 二维数组
- int[][] arr = new int[3][2];
- int[][] arr = new int[2][];一维数组是什么不知道
- int[][] arr = new {{0,0},{0,0},{0,0}}