文章目录
基础语法
语言特点
- 创始人 詹姆斯 高斯林
- 原先是SUN公司后被Oracle公司收购
- 1995 诞生 1996 第一版 从5.0版本开始每半年一更新
- 高版本的JDK向下兼容 版本之间不通融
- 免费 开源 强数据类型 面向对象思想 跨平台性
- JVM : Java虚拟机
- JRE : Java运行环境
- JDK : Java开发工具包
规范
注释
- 单行注释
- 多行注释
- 文本注释
- 写代码必须写注释 先写注释后写代码
关键字
单词全部小写
颜色 : 紫色 蓝色
关键字不能取名
标识符
- 用来取名字的
- 有且仅有英文大小写和数字
- 数字不能开头
- 见名知意
字面值常量
- 整数 小数 字符 字符串
- 布尔值 空常量
作用 : 可以直接输出
给变量进行赋值
空常量不能直接输出 因为空常量是给对象赋值用的
命名规范
类的命名规范
单个单词 : 首字母大写
多个单词 : 每个单词首字母大写
变量名 ,方法
小驼峰命名
单个单词 : 全部小写
多个单词 : 第一个单词小写 从第二个单词开始首字母大写
见名知意
变量
常量 : 程序运行中 值不会发生改变的量
变量 : 程序运行中 值在一定范围内可以发生改变的量
注意事项
使用变量的变量名就是在使用这个变量
在同一个大括号内不可以定义同名变量
变量变化一定要在它能表示的范围内变化
long类型的变量定义时,要在常量值的后面加L
float类型的变量定义时,要在常量值的后面加F
变量只在其定义的大括号内有效
变量出了作用域就死亡
计算机的单元转换
计算机中最小的储存单元 : 字节 byte B
计算机中最小的信息单元 : 比特位 bit b
1B = 8b
数据类型
数据类型
基本数据类型 : 四类八种
整型 : byte short int long
浮点型 : float double
字符型 : char
布尔型 : boolean (true false)
引用数据类型 : 无数个
class 类
interface 接口
Array 数组
enum 枚举
@interface 注解
类型转换
double > float > long > int > char,short,byte
自动提升 : 大类型接收小类型的变量/值
强制转换 : 小的数据类型 变量名 = (小数据类型)大类型的值/变量
不要轻易做类型转换 会导致精度丢失
运算符
算术运算符
: + , - , * , / , % , ++/–
% : 求两个数相除的余数
当被除数小于除数的时候取余的结果就是被除数本身
0 : 48 a : 97 A : 65
++/–
- 必须和变量一起用
- 单独使用 : 不管在变量的前面还是后面 变量做自增自减
参与运算的情况下
在前面 : 先自增/自减 再运算
在后面 : 先运算 再自增/自减
赋值运算
= 就是赋值
拓展的赋值运算符 : +=,-=,*=,/=,%=
拓展的赋值运算符隐含了强制类型转换:
short s = 10;
s += 20;
–> 展开式 : s = (short)(s + 20);
关系运算符
==,!=,>,<,>=,<=
相当于做比较
结果一定是boolean值
逻辑运算符
& : 逻辑与 -> 并且 "严格的丈母娘"
运算法则: 有false则为false
| : 逻辑或 -> 或者 "和蔼的丈母娘"
运算法则: 有true则为true
^ : 逻辑异或 中国的领结婚证关系
运算法则: 相同则为false,不同则为true
! : 逻辑非 -> 取反
运算法则: true则false,false则true
带有短路效果的逻辑运算符:
&& : 逻辑双与
运算法则: 有false则为false
短路效果: &&左边的关系表达式结果为false,右边的表达式 不执行!!
|| : 逻辑双或
运算法则: 有true则为true
短路效果: ||左边的关系表达式结果为true,右边的表达式 不执行!!
只要用逻辑&和逻辑| 就直接使用逻辑双与和逻辑双或!!
三元运算符
结果的数据类型 变量名 = 结果为boolean类型的式子 ? 结果1 : 结果2;
计算boolean类型的式子
结果为true那么就是结果1
结果为false那么就是结果二
流程控制
键盘录入
Scanner 对象名 = new Scanner(System.in);
顺序结构
- 从main方法进入
- 从上至下执行代码
- 每一句代码都是从等号右边开始执行最后赋值的
- 小括号优先级最高
分支结构
switc : 拿表达式跟case后面的值依次做全等比较 如果相等执行case的语句体 遇到break或者反大括号就结束
如果都不相等的话有default就执行它的语句体
case穿透现象
if小括号内语句结果是true就执行语句体 否则就结束if 继续执行后面的代码
if else 判断两次
if 多选择结构如果都为false那么执行语句体n+1
循环结构
执行流程
- 执行初始化语句
2. 执行判断条件语句
-> false 立刻结束循环
3. 若判断条件语句的结果是true,执行循环体语句
4. 执行步进表达式
5. 从第二步骤开始重复执行
for : 1 -> 2 -true-> 4 -> 3 -> 2 -true-> 4 -> 3 -> …
-false-> 结束循环 -false-> 结束循环
while : 1 -> 2 -true-> 4 -> 3 -> 2 -true-> 4 -> 3 -> …
-false-> 结束循环 -false-> 结束循环
do…while循环 : 1 -> 4 -> 3 -> 2 -true-> 4 -> 3 -> 2 …
-false-> 立刻结束循环
用循环的经验
当明确循环次数的时候推荐用for循环
不明确循环次数的时候推荐使用while循环
控制循环的关键字
break : 中断 相当于辞职
continue : 相当于请假
循环嵌套
外层循环执行一次,内层循环要全部执行!!
随机数
Random 对象名 = new Random();
int 变量名 = 对象名.nextInt(m);
nextInt(m) : nextInt(m - n + 1) +n
学习容器的方法
-
如何创建容器
-
如何使用容器的增删改查四类功能 CRUD
-
如何遍历容器
容器 : 数组,集合,数据库
数组
数组的类型是引用数据类型
数组一旦被定义,长度不能发生改变
索引从0开始
一维数组
数据类型[] 数组名; //这里只是对数组进行一个声明
-> int[] arr,double[] arr1,String[] arr2;
//int[] arr : 定义了一个int类型的数组名字叫arr
//int arr : 定义了一个int类型的变量他是一个arr数组
初始化
动态初始化 : 数据类型[] 数组名 = new 数据类型[m];
new 就是创建对象
m 就是数组长度 元素的个数
静态初始化 : 数据类型[] 数组名 = {值1,值2,值3,值4…}
**基本数据类型 : 对应值
引用数据类型 : 地址值 **
动态初始化数组元素默认值
byte,short,int,long : 0
float,double : 0.0
char : '\u0000' 空字符
boolean : false
所有元素是引用数据类型的数组 : null
数组的增删改查
增删没有
改 : 先查后改
改元素 : 数组名[索引] = 修改的值
查 : 查元素 : 数组名[索引]
查元素个数,数组长度 : 数组名.length
java的内存分配
栈内存 : 弹夹 stack
先进后出
存放局部变量
栈内存元素 执行完毕立即死亡
堆内存 : 存放new的东西本体 memory
数据都有地址值 每nuw一次生成一个新的地址值
对象内部空间都是有默认值的
方法区 :
存放字节码文件 Class的对象
常量池 :存放常量的池子
局部变量和成员变量
局部变量 : 方法内和方法形参上的变量
随着方法的调用而产生 随着方法的出栈而死亡
成员变量 : 类中方法外
成员方法 : 类中方法外的方法