1. java介绍
- jre: java运行环境. jre=java 虚拟机+核心内裤(辅助java虚拟机运行的文件)
- jdk: java开发工具集. jdk=jre+java开发工具
- jvm: java虚拟机
jdk目录介绍
bin //存放的的是java的开发工具
|----java.exe //启动java虚拟机解释并执行指定的class文件
|----javac.exe //启动java编译器对指定的java原文件进行编译
|----javadoc.exe //生成开发者文档的
db //jdk附带的轻级数据库
include //存放调用系统资源的接口文件
jre //java运行环境
lib //核心类库
src.zip //java原始代码
2. 规范
1.类名和接口名大驼峰
2.变量名与方法名单词小驼峰
3.包名全部小写
4 常量全部大写中间下划线隔开
5.有小括号的是方法没有的是属性
注释规范
1.一般单行注释是在代码的右侧
2.多行注释和文档注释,一般是在类和方法的上面
3.@author 张舫邮箱1069303772@qq.com 留名
常量的类别
1.整数常量
2.小数常量
3.布尔常量 true|false
4.字符常量 //指单个字符用单引号包起来的单个字符
5.字符串常量 //使用双引号包起来的内容
进制

进制:用有限的数字符号表达所有的数据.
十进制和二进制的转化


八进制的由来and十进制和八进制转化




十六进制的相互转化




变量
变量就是一个存放数据的容器
容器具备什么特点
1.容量(大小)
2.存储一定格式的数据
3.名字
定义一个变量的格式:
java表示一个变量的容量多大是使用了数据类型描述的.在java中的数据类型主要有两种数据类型
基本数据类型
引用数据类型
java中的八种基本数据类型
整数的数据类型:
- byte(字节) 8bit(位) 2^8 -128~0-127
- short(短整形) 16bit(位) 2^16 2^16=65536
- int(整形) 32bit(位) 2^32 4294967296
- long(长整形) 32bit(位) 2^64 18446744073709551616
注意:一个整数没有加上任何表示的时候,默认是int类型的数据如果需要把该数据表示成一个long类型的数据,那么需要加数据后面上L表示,不区分大小写,建议使用大写
小数的数据类型(表留的小数位不同)
- float(单精度浮点型) 32bit 7个小数位
- double(双精度浮点型) 64bit 15个小数位
注意:如果一个下小数没有加任何标示的时候,那么该小数默认是double类型的数据,如果需要表示成float类型,那么需要在小数的后面就是f表示.f不区分大小写的建议大写
容量 变量名字 = 数据;
布尔类型
- boolean 一个字节或者4个字节
java规范2.0(java白皮书)
字符类型
- catr 2字节(16bit)
数据类型转化
小数据类型-->大数据类型 //自动类型转化
大数据类型-->小数据类型 //报可能会损失精度
强制数据转化
小数据类型 变量名=(小数据类型) 大数据类型的变量
强制类型转化原理

数据类型转换要注意的细节:
1.凡是byte,short,char数据类型在运算的时候都会自动转换int数据在运算.
1.两个不同数据类型的数据在运算的时候,结果取决于大的数据类型
计算机中的负数都是补码


运算符
算数运算符
/
%
++
--
计算机每次运算的时候只能取两个数据运算
在java中做取模运算时正负取决于被除数
后自增在java虚拟机的运行原理

赋值运算符
=
+=
-=
*=
/=
%=
比较运算
==
!=
<
<=
>=
逻辑运算符
& (与) //并且
| (或) //或者
^ (异或) //不相同
! (非)
&& (短路与\双与)
||(短路或\双或)
位运算符直接对二进制位操作
& (与)

| (或)


^ (异或)


~ (取反)

位移运算符
<< (左移)


>> (右移)
注意:一个操作数在进行右移运算的时候,如果该操作数是一个正数,那么右边空缺位使用0补齐,如果该操作位数是一个负数,那么使用1补齐

>>> (无符号右移)

三元运算符(三目运算符)
格式: 布尔表达式?值1:值2;

控制流程语句
使用分号分割的代码就是一个语句
按照代码顺序从上往下执行所有的代码就是顺序语句
判断语句
if else

switch
'switch
语句使用的变量只能是byte ,char ,short ,int ,string ,jdk7.0开始支持string
- case后面跟的数据必须是一个常量
- switch语句一旦匹配到其中的一个case,呢们就会执行对应case中的语句,执行完毕后没有遇到break或者是结束switch语句的大括号,哪门switch语句不会再谱安顿,按照代码顺序从上往下执行所有的代码>直到遇到break或者是switch语句的大括号为止.
- 不适用于区间范围的条件

循环语句
while

do...while
while的条件怎么写do while就怎么写
for


转义字符 \

特殊字符使用\将其转化
\b Backspace (退格键)
\t Tab (制表符) //上一列对齐 一个tab一般等于4个空格
\n Linefeed (换行)
\r Carriage Return (回车)
\ Backslash (反斜杠)
break continue关键字
- break适用范围:只能用于switch或者是循环语句中
- break用于循环语句中的作用是结束当前所在的循环语句
- 标记要符合标记的规范

continue的适用范围:continue只能用于循环语句
continue的作用:continue的作用是跳过本次的循环内容.继续下一次循环
函数(方法)



函数的重载:在一个类中出现两个或者两个以上的同名函数这个称作函数的重载.
函数重载的作用:同一个函数名可以出现了不同的函数,以应对不同个数或者不同数据类型的参数
函数重载的要求:
- 函数名一致
- 形参列表不一致(形式参数的个数或者是对应的数据类型不一致)
- 与函数的返回值类型是无关的

return的作用
- 返回数据给函数的调用者
- 函数一旦执行到了return关键字,函数马上结束;
数组



null不让变量引用任何值,不要记录任何内存地址




一个固定,一个变换,最大或者最小放在左边


两个一起变化最大或者最小的放在右边




**二维数组数组


面向对象
对象:真实存在的唯一事物
1.我们一般不会给匿名对象属性值,因为永远获取不到.
2.两个匿名对象永远不可能是一个对象
构造函数要注意的细节
- 构造函数,是没有返回值的
- 构造函数的函数名必须要与类名一致
- 构造函数并不是由我们手动调用的,而是在创建对应的对象时,jvm就会主动调用到对象
- 如果一个类没有显示的写上一个构造方法是,那么java编译器会为该类添加一个无参的构造函数
javap 反编译工具的使用格式
javap -c -l -private 类名
单例设计模式
单例设计模式保证一个在内存中只有一个对象
饿汉单例设计模式(推荐)
步骤
- 私有化构造函数
- 声明本类的引用类型变量,并且使用该变量指向本类对象(自己new自己传参给变量)
- 提供一个公共的静态的方法获取本类的对象

懒汉单例设计模式(会存在线程安全问题,目前还不能再一个类在内存中只有一个对象)
步骤
- 私有化构造函数
- 声明本类的引用类型变量,但是不要创建对象.
- 提供公共静态的方法获取本类的对象,获取之前先判断是否已经创建本类对象,如果已经创建了,那么直接返回对象即可,如果还没有创建先创建在返回.

java权限修饰符

生命周期状态图

线程的定义方式
方式一:
- 自定义一个类继承Thread类
- 重写Thread类的run方法,把自定义线程的任务代码写在run方法
- 创建Thread的子类对象,并且调用start方法启动一个向线程
方式二:
- 自定义一个类实现Runable接口
- 实现Runnable接口的run 方法,把自定义线程的任务定义在run方法.
- 创建Runnable实现类对象
- 创建Thread类对象,并且把Runnable实现类的对象作为一个实参传递
- 调用Thread对象的start方法开启一个线程
线程安全问题
- 存在在两个或着两个以上的线程对象共享共享同一个资源.
- 多线程操作共享资源的代码有多句
推荐使用方式二
原因:因为java单继承多实现
注意
注意:千万不要直接调用run方法,调用start方法的时候线程就会开启,线程一旦开启就会执行Run方法中代码,如果直接调用
14day2 3:23
网友评论