-
疑问
- day02
- day03
- day04
-
王克晶
-
每天内容
- PPT
- 经典案例
- 课后作业
-
刘苍松
- #二进制
- ##什么是二进制
- ##计算机如何处理二进制
- 16进制
-
二进制补码
- 补码:将二进制全排列分一半当做负数。
- -n=~n+1
- ~符号:
~n意为
n值的二进制中0与1互换
记住:0与-1补-->n与-(n+1)补
- 子主题 5
- 凑巧对称补码,注:对极值不生效
-
2进制运算
- ~取反运算
-
&与运算 和 >>> 右移运算
- & :面具=掩码(1的交集)
- 数据截取
-
|按位或运算(类似加法但不进位) 和 <<左移运算
- 数据拼接
-
移位运算的数学意义
- 移动小数点计算:
- 10进制小数点移动一次,数据变化10倍
- 2进制小数点移动一次,数据变化2倍
-
>>与>>>
- 正数情况下一样!
-
负数情况不同:
- >>高位补1
- >>>高位补0
- 能用移位计算的时候用以为计算比乘法计算效率更高!
- 提示:没有<<<运算符,因为只有高位才有符号位
-
day01
- 计算机分类
-
1.Linux系统
- 1)开源、免费
-
2)目录结构不同
-
Linux系统
- /
- etc
- home
- soft01
- mnt
- sdcard
- cdrom
-
3)基于命令操作(快速)
- pwd:显示当前目录
- cd:改变当前工作目录
- ls:查看当前工作目录的内容
- cd .. :返回上级目录
-
相对路径和绝对路径
- 绝对路径:相对于根目录的位置,以/开头
- cd/m/n
- 相对路径:相对于当前目录的位置,无需以/开头
- cd m/n
-
练习
- 1.找/home/soft01/tts9/eclipse
- 2.逐级按照相对路径找/home/soft01/tts9/eclipse
-
2. Java开发环境
-
1)编译运行过程:
- 1.1)编译期:
Java源文件.java--->javac编译--->.class
- 1.2)运行期:
JVM加载.class并运行.class
-
2)名词解释
-
JVM
- Java虚拟机(系统匹配)
加载.class并运行.class
-
JRE
- Java运行环境:
JRE=JVM+java系统类库(运行环境)
-
JDK
- java开发工具包
JDK=JRE+编辑、运行等命令工具
- 运行Java的最小环境为JRE,开发Java的最小环境为JDK
-
3)配置环境变量:了解
- JAVA_HOME:只想Java JDK安装目录,
- CLASSPATH表示累的搜索路径,简单的可以使用(.),值
- PATH:只指向dk下的bin目录
-
3.eclipse IDE
- workspace 默认工作空间
-
开发步骤
- 新建Java项目/工程
- 新建Java包
- 新建Java类
-
注释:解释性文本
- 1)单行注释//
- 2)多行注释/* */
- 3)文档注释/** */
-
练习
- 1)新建Java项目MyProject
- 2)在MyProject项目中新建Java包mypackage
- 3)在mypackage包中新建Java类HelloWorld,main()中:输出HelloWorld
-
4)在mypackage包中新建Java类Test,main()中:
- 输出今天天气不错,不换行
- 输出心情也不错,换行
- 输出当日事当日毕,不换行
- 输出欢迎大家来到达内,换行
- 输出......
-
经典案例
- JDK及Eclipse目录结构操作
- JDK的安装及配置
- 控制台版的JAVA HelloWorld
- 使用Eclipse开发Java应用程序
-
day02
-
1.变量
-
声明
- 包含:数据类型 变量名;
- 未声明变量不能使用
-
命名
-
1)符合标识符规则
- 数字、字母、_、$组成
且不能以数字开头
- 大小写敏感
- 不能用关键字
- 建议不使用中文
-
2)命名法
- 见名知意
- 驼峰命名法
- 变量命名: myScore
- 帕斯卡命名法
- 类命名:HelloWorld
-
初始化:第一次赋值
- 3.1)声明同时初始化:
- 3.2)先声明后初始化:
- 未经初始化不能使用
-
使用
- 4.1)对变量的操作就是对它所存的数的操作
- 4.2)变量的操作必须与数据类型匹配
- 4.3)变量使用前必须声明并初始化
- 练习:
-
2.基本数据类型
- 8种基本数据类型
-
int 整型,4个字节,21亿
- 整数直接量默认为int,但不能超范围
- 整数相除,结果还是整数,小数位无条件舍弃
- 运算时若超出范围,则发生溢出,
-
long:长整型,8个字节
- 长整型直接量需在数字后家L/l
- 运算时,右边的直接量为int,有可能溢出,建议在第一个数字后+l
- System.CurrentTimeMillis()
获取自1970.1.1零时到此时此刻的毫秒数
-
double:浮点型,8个字
- 浮点数职的直接量默认为double型
若想表示float,需要加F/f
- double数据运算时会出现舍入误差,
精确场合不能使用
-
boolean 布尔型,1个字节
- 只能存储true or false
-
char 字符型,2个字节
- Unicode编码格式------固定16位,
每个字符(char)都对应一个编码(int)
0到65535
- 字符必须放在单引号''之内
- 特殊字符许通过"\"来转义
-
3.基本数据类型间的转换
-
1)两种方式
- 自动类型转换:从小类型到大类型
-
强制类型转化:从大类型到小类型
- 可能溢出可能丢失精度
-
2)两点规则
- 2.1)整数值直接量可以直接赋值给byte,short,char
- 2.2)byte,short,char类型
参与运算时,
会被转化为int后在参加运算(“+=”此类运算不会被自动转化为int)
-
4.Scanner的用法
- 1)在package下:
import java.util.Scanner;
- 2)在main()方法中:
Scanner scan= new Scanner( System.in );
- 3)在2之后:
System.out.println("请输入年龄:")
int age = scan.nextInt();
- 练习
-
经典案例
-
1.变量使用常用错误汇总
- 1.1 问题
- 1.2 方案
-
1.3 步骤
- 步骤一:使用未经声明的变量
- 步骤二:使用不符合Java标识符命名规则的变量
- 步骤三:使用未经初始化的变量
- 步骤四:变量的赋值与变量的类型不匹配
- 1.4 完整代码
-
2.整数类型(int、long)使用常见问题汇总
- 2.1 问题
- 2.2 方案
-
2.3 步骤
- 步骤一:整数直接量超出了整数的范围
- 步骤二:关于整数的除法
- 步骤三:整数运算的溢出
- 步骤四:表示long直接量,需要以 L 或 l 结尾
- 2.4 完整代码
-
3.浮点类型(float、double)使用常见问题汇总
- 3.1 问题
- 3.2 方案
-
3.3 步骤
- 步骤一:浮点数的直接量为double类型
- 步骤二:浮点数存在舍入误差问题
- 3.4 完整代码
-
4.对char类型变量的各种赋值方式汇总
- 4.1 问题
- 4.2 方案
-
4.3 步骤
- 步骤一:字符类型存储中文
- 步骤二:整数类型和char类型的关系
- 4.4 完整代码
-
5.类型转换常见问题汇总
- 5.1 问题
- 5.2 方案
-
5.3 步骤
- 步骤一:强制转换时的精度丧失和溢出
- 步骤二:数值运算时的自动转换
- 步骤三:byte、char、short转换为int的问题
- 5.4 完整代码
-
6.年龄判断程序
- 6.1 问题
-
6.2 步骤
- 步骤一:定义类及 main方法
- 步骤二:读取控制台输入
- 步骤三:判断年龄所在的范围
- 6.3 完整代码
-
day03
-
1.运算符
-
1.1算术运算符
- 7个:+、-、*、/、%、++、--
-
1)%:取模/取余,余数为0即为整除
- 只能适用于整数及char类型
-
2)++/--:自增1/自减1,可在变量前也可在变量后
- 2.1)单独使用时,在前在后无差别
- 2.2)被使用时,在前在后有差别
- a++的值为a
- ++a的值为a+1
-
1.2关系运算符
- 1)六个:>、>=、<、<=、!=、==
- 2)关系运算只有两种结果: true或false
(可直接输出也可赋值给boolean)
-
1.3逻辑运算符
- && :短路与(并且)
- || :短路或
- ! :逻辑非
- 短路逻辑!!
-
1.4赋值运算符
- =,+=,-=,*=,/=,%=
- a+=1 -->a=a+1
-
1.5连接字符串运算符+
- 两边都是数字,则做算术运算
- 出现字符串,则作字符串连接
-
1.6 三目运算符
- 1)语法:boolean表达式?数1:数2;
-
2)执行过程:
- 计算boolean的值:
- 若为true,则整个表达式的结果为数1
- 若为false,则整个表达式的结果为数2
-
2.分支结构
-
2.1 if...:(1路)
- 语法
- if语句的大括号不要省略
-
2.2 if...else...(2路)
- 语法
-
2.3 if...else if(多路)
- 语法
-
2.4 switch...case:(多路)
- 语法
- 优点:效率高、结构清晰
- 缺点:整数,相等
- 练习
-
经典案例
-
1.闰年判断程序
-
1.1 问题
- 1.2 方案
-
1.3 步骤
- 步骤一:定义类及 main方法
- 步骤二:读取控制台的输入
- 步骤三:闰年判断
- 步骤四:输出结果
- 1.4 完整代码
-
2.完成收银柜台收款程序V2.0
-
1.1 问题
-
1.2 方案
-
1.3 步骤
- 步骤一:定义类及 main方法
- 步骤二:读取控制台输入
- 步骤三:计算所购商品总价并判断是否打折
- 步骤四:计算找零并输出结果
- 1.4 完整代码
-
3.完成收银柜台收款程序V3.0
- 1.1 问题
- 1.2 方案
-
1.3 步骤
- 步骤一:使用if-else修改上一案例
- 1.4 完整代码
-
4.完成成绩等级输出程序
- 1.1 问题
-
1.3 步骤
- 步骤一:定义类及 main 方法
- 步骤二:读取控制台的输入
- 步骤三:使用 if-else 语句进行判断
- 1.4 完整代码
-
5.完成命令解析程序
- 1.1 问题
- 1.2 方案
-
1.3 步骤
- 步骤一:定义类及 main 方法
- 步骤二:读取控制台的输入
- 步骤三:使用 switch-case 解析命令
- 1.4 完整代码
-
day04
-
1.循环结构
-
**循环三要素**
- 1)循环变量的初始化
- 2)循环的条件(以循环变量为基础)
- 3)循环变量的改变(向着循环的结束改变)
- 循环变量:在循环过程中反复改变的那个量
-
1.1while
- 执行逻辑(语法)
- 先判断后执行,有可能一次都不执行循环体
- break跳出循环(结束循环)
- continue跳过循环(循环继续)
-
1.2do...while
- 语法
- 先执行,后判断,至少执行一次;
当第一要素跟第三要素一样时,更适用!
-
1.3for
- 语法
- 固定次数的循环首选for
-
for表达式的3种特殊用法
- for语句实现循环时需要用分号;分隔
- 特殊方式1:表达式1位置内容为空
- 特殊方式2:表达式3位置内容为空
- 特殊方式3:表达式1,2,3位置内容均为空
-
1.4 break:跳出循环
continue:跳过剩余循环体,进入下一轮
- break一般跟if一起用
- 练习
-
day05
-
1. 三中循环结构的更佳使用情况
- 1)while
- 2)do...while:一三要素(开始、递变一样)
- 3)for: 存户按次数固定
-
2. 嵌套循环
- 1)循环中套循环,常常多行多列时使用,
一般外层控制行,内层控制列
- 2)执行规则:
外层走一次,内层走所有次循环
- 3)建议:循环层数越少越好,
若超3层才能完成,说明效率低下
- 4)break只能跳一层循环,
在某种情况下,跳出多层循环的需求几乎没有
-
3.程序=算法+数据结构
- 1)算法:解决问题的流程、步骤(顺序、分支、循环)
- 2)数据结构:将数据按照某种特定的结构来保存数怎么存
- 设计良好的数据结构会一定程度上决定 算法的简易程度
- 做项目最开始先考虑做数据结构,最优化数据结构的设计
-
4. 数组:
- 1)概念:相同数据类型的元素集合
- 2)数组也是一种数据类型(引用类型)
- 3)数组的定义:
int [ ] arr =new int [5];
- 4)数组的初始化
int [] arr=new int[4]; //0,0,0,0,
int [] arr={1,3,5,7};
int [] arr=new int[]{1,3,5,7};
-
5)数组的访问:
- 5.1)通过(数组名.length)获得数组的长度
- 5.2)通过下标来访问数组中的元素arr[i]
下标从0开始,最大到arr.length-1 。
- 6)数组的遍历:
给数组所有元素逐个赋值/逐个输出;
-
7)数组的复制:
- System.arraycopy();
-
Arrays.copyOf(类型[]orifinalArray,int newLength)
- 直接从从第一个元素开始复制
- newLength大于arr.length,则扩容
- newLength小于arr.length,则截取
-
8)数组的排序
- Arrays.sort(arr);
-
冒泡排序:
- 四个数冒三轮
- 每一轮都从第一个元素开始冒;
每一次都是和它的下一个元素比
- 冒出来的就不带它玩了
- 降序冒泡
- 练习