java

1. java介绍

  1. jre: java运行环境. jre=java 虚拟机+核心内裤(辅助java虚拟机运行的文件)
  2. jdk: java开发工具集. jdk=jre+java开发工具
  3. 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 张舫邮箱[email protected] 留名

常量的类别

1.整数常量
2.小数常量
3.布尔常量 true|false
4.字符常量 //指单个字符用单引号包起来的单个字符
5.字符串常量 //使用双引号包起来的内容

进制

程序里如何使用二八十六进制

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

java_第1张图片
十进制转二进制

java_第2张图片
二进制转十进制

八进制的由来and十进制和八进制转化
java_第3张图片
八进制的由来

java_第4张图片
十进制转二进制
java_第5张图片
八进制转十进制

java_第6张图片
八进制转二进制

十六进制的相互转化

java_第7张图片
十六进制转换
java_第8张图片
十进制转化十进制
java_第9张图片
十六进制转化十进制
java_第10张图片
十六进制的由来

变量

变量就是一个存放数据的容器
容器具备什么特点
1.容量(大小)
2.存储一定格式的数据
3.名字
定义一个变量的格式:
java表示一个变量的容量多大是使用了数据类型描述的.在java中的数据类型主要有两种数据类型
基本数据类型
引用数据类型
java中的八种基本数据类型
整数的数据类型:

  1. byte(字节) 8bit(位) 2^8 -128~0-127
  2. short(短整形) 16bit(位) 2^16 2^16=65536
  3. int(整形) 32bit(位) 2^32 4294967296
  4. long(长整形) 32bit(位) 2^64 18446744073709551616
    注意:一个整数没有加上任何表示的时候,默认是int类型的数据如果需要把该数据表示成一个long类型的数据,那么需要加数据后面上L表示,不区分大小写,建议使用大写

小数的数据类型(表留的小数位不同)

  1. float(单精度浮点型) 32bit 7个小数位
  2. double(双精度浮点型) 64bit 15个小数位
    注意:如果一个下小数没有加任何标示的时候,那么该小数默认是double类型的数据,如果需要表示成float类型,那么需要在小数的后面就是f表示.f不区分大小写的建议大写
    容量 变量名字 = 数据;

布尔类型

  1. boolean 一个字节或者4个字节
    java规范2.0(java白皮书)

字符类型

  1. catr 2字节(16bit)

数据类型转化

小数据类型-->大数据类型 //自动类型转化
大数据类型-->小数据类型 //报可能会损失精度
强制数据转化
小数据类型 变量名=(小数据类型) 大数据类型的变量
强制类型转化原理

java_第11张图片
强制转换去取低8位

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

java_第13张图片
负数如何转化为二进制

运算符
算数运算符

/
%
++
--
计算机每次运算的时候只能取两个数据运算
在java中做取模运算时正负取决于被除数

后自增在java虚拟机的运行原理

java_第14张图片
自增原理

赋值运算符
=
+=
-=
*=
/=
%=
比较运算

==
!=

<

<=
>=
逻辑运算符

& (与) //并且
| (或) //或者
^ (异或) //不相同
! (非)
&& (短路与\双与)
||(短路或\双或)

位运算符直接对二进制位操作

& (与)

java_第15张图片
与怎么算

| (或)

java_第16张图片
或怎么算
java_第17张图片
读取低四位

^ (异或)

java_第18张图片
异或怎么算
java_第19张图片
两个变量交换值

~ (取反)

java_第20张图片
怎么取反

位移运算符
<< (左移)

左移规律
如何高效算出2乘8的结果

>> (右移)

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

右移规律

>>> (无符号右移)

无符号右移和右移的区别

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

java_第21张图片
运算符的优先级和结合性

控制流程语句

使用分号分割的代码就是一个语句
按照代码顺序从上往下执行所有的代码就是顺序语句

判断语句
if else

java_第22张图片
if

switch

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

java_第23张图片
switch格式

循环语句
while

java_第24张图片
while格式

do...while

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

for

java_第25张图片
for格式
java_第26张图片
for循环原理

转义字符 \

换行注意

特殊字符使用\将其转化
\b Backspace (退格键)
\t Tab (制表符) //上一列对齐 一个tab一般等于4个空格
\n Linefeed (换行)
\r Carriage Return (回车)
\ Backslash (反斜杠)

break continue关键字

  1. break适用范围:只能用于switch或者是循环语句中
  2. break用于循环语句中的作用是结束当前所在的循环语句
  3. 标记要符合标记的规范
java_第27张图片
如何让内部的循环影响外部的

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

函数(方法)

函数的格式
java_第28张图片

函数分析

函数的重载:在一个类中出现两个或者两个以上的同名函数这个称作函数的重载.
函数重载的作用:同一个函数名可以出现了不同的函数,以应对不同个数或者不同数据类型的参数
函数重载的要求:

  1. 函数名一致
  2. 形参列表不一致(形式参数的个数或者是对应的数据类型不一致)
  3. 与函数的返回值类型是无关的
java_第29张图片
函数重载的例子

return的作用

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

数组

java_第30张图片
数组的特点
java_第31张图片
数组的使用
java_第32张图片
栈堆分析图

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

数组常见的问题
数组的初始化方式
java_第33张图片
找最大值
java_第34张图片
选择排序的原理图

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

java_第35张图片
选择排序算法(直接排序)

java_第36张图片
冒泡排序原理图

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

java_第37张图片
冒泡排序
java_第38张图片
二分查找法原理图
java_第39张图片
二分查找法
java_第40张图片
反转

**二维数组数组

java_第41张图片
二维数组
java_第42张图片
二维数组原理

面向对象
对象:真实存在的唯一事物
1.我们一般不会给匿名对象属性值,因为永远获取不到.
2.两个匿名对象永远不可能是一个对象


构造函数要注意的细节

  1. 构造函数,是没有返回值的
  2. 构造函数的函数名必须要与类名一致
  3. 构造函数并不是由我们手动调用的,而是在创建对应的对象时,jvm就会主动调用到对象
  4. 如果一个类没有显示的写上一个构造方法是,那么java编译器会为该类添加一个无参的构造函数

javap 反编译工具的使用格式
javap -c -l -private 类名


单例设计模式

单例设计模式保证一个在内存中只有一个对象
饿汉单例设计模式(推荐)

步骤

  1. 私有化构造函数
  2. 声明本类的引用类型变量,并且使用该变量指向本类对象(自己new自己传参给变量)
  3. 提供一个公共的静态的方法获取本类的对象
java_第43张图片
饿汉

懒汉单例设计模式(会存在线程安全问题,目前还不能再一个类在内存中只有一个对象)

步骤

  1. 私有化构造函数
  2. 声明本类的引用类型变量,但是不要创建对象.
  3. 提供公共静态的方法获取本类的对象,获取之前先判断是否已经创建本类对象,如果已经创建了,那么直接返回对象即可,如果还没有创建先创建在返回.
java_第44张图片
懒汉

java权限修饰符

java_第45张图片
权限图

生命周期状态图

java_第46张图片
生命周期状态图


线程的定义方式
方式一:

  1. 自定义一个类继承Thread类
  2. 重写Thread类的run方法,把自定义线程的任务代码写在run方法
  3. 创建Thread的子类对象,并且调用start方法启动一个向线程

方式二:

  1. 自定义一个类实现Runable接口
  2. 实现Runnable接口的run 方法,把自定义线程的任务定义在run方法.
  3. 创建Runnable实现类对象
  4. 创建Thread类对象,并且把Runnable实现类的对象作为一个实参传递
  5. 调用Thread对象的start方法开启一个线程

线程安全问题

  1. 存在在两个或着两个以上的线程对象共享共享同一个资源.
  2. 多线程操作共享资源的代码有多句

推荐使用方式二
原因:因为java单继承多实现

注意

注意:千万不要直接调用run方法,调用start方法的时候线程就会开启,线程一旦开启就会执行Run方法中代码,如果直接调用
14day2 3:23

你可能感兴趣的:(java)