第二天笔记
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第二天笔记相关的知识,希望对你有一定的参考价值。
早上: 1:重点在于开发环境的设置(3课时) 2:编程基础(2课时): 3:Java语言介绍、main函数、类文件介绍 笔记: 1:常用的DOS命令 A:盘符切换 盘符: 然后回车 B:列出当前目录下的文件以及文件夹 dir 然后回车 C:创建目录(文件夹) 了解 md 目录名称 D:删除目录 了解 rd 目录名称 E:进入指定目录 a:单级目录 cd 目录名称 b:多级目录 cd 多级目录名称,目录间用\隔开的 F:回退指定目录 a:单级目录 cd .. b:多级目录 cd G:删除文件 del 文件名称 del *.txt 删除所有以.txt结尾的文件 H:清屏 cls J:退出 exit 2:Java语言(了解) (1)Java语言概述 A:Java之父 詹姆斯.高斯林 B:正式更名为:Java 1995.5.23 C:版本演进 JDK4,JDK5,JDK6,JDK7,JDK8 (2)JDK的平台版本 A:JavaSE java基础 B:JavaME android 手机访问 C:JavaEE web 电脑上通过浏览器访问 (3)跨平台性(理解) 由JVM保证了java语言的跨平台。 注意: java语言是跨平台的,jvm不是跨平台的。 (4)JRE和JDK的作用和关系(理解) A:JVM 保证Java语言跨平台 B:JRE JVM + 核心类库 Java程序的运行环境 C:JDK JRE + 开发工具 Java程序的开发环境 3:JVM,JRE和JDK的各自作用和关系 A:JVM 保证Java语言跨平台性 B:JRE Java程序的运行环境 包括:JVM和核心类库 C:JDK Java程序的开发环境 包括:JRE和开发工具 4:JDK的下载,安装,卸载(掌握) (1)下载 到官网。 (2)安装 傻瓜式安装。 建议: A:在D盘建立一个目录:develop B:傻瓜式安装,修改安装的路径到d盘的develop C:路径如下 JDK: D:\develop\Java\jdk1.7.0_72 JRE: D:\develop\Java\jre7 (3)卸载 A:控制面板 B:360之类的软件卸载工具 (4)JDK安装后的目录介绍 5:开发第一个Java程序(HelloWorld) A:找到JDK安装的bin目录,因为开发工具在这里。 D:\develop\Java\jdk1.7.0_72\bin B:在bin目录下新建一个文本文件,并修改其名称为: HelloWorld.java java源文件的扩展名为:.java C:用windows记事本打开HelloWorld.java文件,写内容 D:Java程序最基本的组成单位是类,所以首先我们要定义一个类。 怎么定义呢? 格式: class 类名 { 类体 } 建议:类名和文件名一致。 E:一个类要想独立运行,必须写一个主方法。 怎么写主方法呢? 格式: public static void main(String[] args) { 方法体 } F:在主方法中写一条输出语句。 怎么写输出语句呢? 格式: System.out.println("你要输出的内容"); 6:Java程序的开发和执行流程 A:首先编写java源代码程序,扩展名.java HelloWorld.java B:在命令行模式中,输入javac命令对源代码进行编译,生成字节码文件 javac 文件名(带扩展名) C:在命令行模式中,输入java命令对字节码文件进行执行 java 类名 练习: 请通过windows记事本写一个程序,在控制台输出你自己的名称(拼音) 7:常见问题(掌握) (1)找不到文件 A:后缀名被隐藏 B:文件名写错了 (2)单词拼写错误 java程序是严格区分大小写的 (3)括号一定要成对 (4)非法字符 一般都是中英文符号问题(中英文分号的问题最常见) 8:配置path环境变量 A:为什么要配置path环境变量呢? 是为了让javac命令可以在任意目录下使用。 B:如何配置呢? a:方式1 把JDK的bin目录配置到path中。 修改系统属性中的path环境变量: D:\develop\Java\jdk1.7.0_72\bin;以前的path内容 b:方式2 创建新的变量名称: 变量名:JAVA_HOME 变量值:D:\develop\Java\jdk1.7.0_72 修改path变量: 用%%引用JAVA_HOME即可。 %JAVA_HOME%\bin;以前的path内容 等价于下面的内容: D:\develop\Java\jdk1.7.0_72\bin;以前的path内容 练习: 先配置环境变量,然后在d盘根目录写一个程序,并编译运行。 请通过windows记事本写一个程序,在控制台输出你自己的名称 下午: 1:重点:int,float,char 2:基本数据类型和变量定义以及String类型 1.注释:用于解释说明程序的文字 注释的分类及格式: A:单行注释 B:多行注释 注释作用: A:解释说明程序,提高程序的阅读性 B:可以帮助我们排错 后面我们会讲解更高级的排错方式 2. 关键字:被Java语言赋予特定含义的单词 关键字特点: 组成关键字的字母全部小写 关键字注意事项 A:goto和const作为保留字存在,目前并不使用 B:类似notepad++这样的高级记事本,针对关键字有特殊的颜色标记,非常直观 蓝色 注意: main不是关键字。只是被JVM识别的名称。 3. 标识符:就是起名字。 就是给类,接口,方法,变量等起名字时使用的字符串(字符序列) 组成规则: A:英文大小写字母 B:数字字符 C:$和_ 注意事项: A:不能以数字开头 B:不能是Java中的关键字 C:区分大小写 class,Class 常见的命名规范:见名知意 假设: class Student {} class Phone {} class S {} class P {} 包:就是文件夹,用于对类进行分类管理。 单词全部小写。 单级:com 多级:com.baidu,cn.sohu a a.b a.b.c a.b.c.d 类或者接口: 一个单词: 首字母大写。 举例:Demo,Student 多个单词: 每个单词的首字母大写。 举例:HelloWorld,MakeName 方法或者变量: 一个单词: 全部小写。 举例:main(),name,show(),age 多个单词: 从第二个单词开始,每个单词首字母大写。 举例:showAllNames(),getNameBySid(),studentMaxAge 常量: 单词全部大写。 一个单词: 举例:PI 多个单词: 举例:STUDENT_MAX_AGE 4. 常量: 在程序执行的过程中其值不可以发生改变 常量的分类: A:字面值常量 B:自定义常量(面向对象) 字面值常量: A:字符串常量 用双引号括起来的内容 B:整数常量 所有整数 C:小数常量 所有小数 D:字符常量 用单引号括起来的内容 E:布尔常量 较为特有,只有true和false F:空常量 null(数组部分讲解) 5. 不同进制的数据组成 二进制:由0,1组成。以0b开头 八进制:由0,1,…7组成。以0开头 十进制:由0,1,…9组成。整数默认是十进制的 十六进制:由0,1,…9,a,b,c,d,e,f(大小写均可)。以0x开头 画图讲解进制: 1.进制的概述和二进制,八进制及十六进制 2.其他进制到十进制 (2.1 将十进制12345转换成十进制12345 2.2 将二进制ob100转换成10进制 2.3将八进制0100转换成10进制 2.4将ox100转换为10进制) 3.十进制到其他进制(3.1 十进制12345到12345十进制 3.2 十进制52转换为2进制) 4.+7与-7的原码,反码,补码介绍 6. 数据类型分类: 基本类型:4类8种。 引用类型:类,接口,数组。 基本类型: 整数 占用字节 范围 byte 1 -128 ~ 127 short 2 -2^15 ~ 2^15 - 1 int 4 -2^31 ~ 2^31 - 1 long 8 -2^63 ~ 2^63 - 1 1k空间: 1k = 1024 byte byte = 8bit 浮点数 float 4 -3.403E38 ~ 3.403E38 double 8 -1.798E308 ~ 1.798E308 字符 char 2 Java采用的是unicode编码。所以java中每一个字符占用两个字节。这样就可以存储一个汉字了。 布尔 boolean 1 true,false 注意: A:默认整数是int类型 B:默认浮点数是double类型 C:如果要定义long类型的变量,建议加L或者l。建议加L。 D:如何要定义float类型的变量,必须加F或者f。建议加F。 7. 这里我们要介绍一个运算符: + 做数据的加法。 数据在做运算的时候,会进行类型的转换,只有类型一致才能进行运算。 A:boolean类型不参与。 B:类型转换 隐式转换 强制转换 隐式转换: 从小到大。 byte,short,char -- int -- long -- float -- double 8. 强制转换:(一般不建议做强制转换,这样会有数据的丢失) 从大到小。 格式: 目标数据类型 变量名 = (目标数据类型)(运算的结果) 9. 字符做加法 其实是去找字符对应的数据值来做加法。 ASCII码表。 基本的字符和数据对应表。 ‘0‘ 48 ‘A‘ 65 ‘a‘ 97 字符串做加法 其实做的是字符串的拼接。 如果有字符串,结果肯定是字符串类型。 10. 面试题:请看下面的程序那一行有问题,并说明为什么。 class DataTypeTest { public static void main(String[] args) { byte b1=3,b2=4,b3; //可能损失精度 b3 = (byte)(b1 + b2); System.out.println(b3); byte b4 = 3 + 4; System.out.println(b4); } 变量相加:先提升类型,然后做运算。 常量相加:先做运算,如果在指定的范围内,就赋值成功,否则报错。 第二天 1.几个概念: 1:运算 对常量和变量进行操作的过程称为运算。 2:运算符 对常量和变量进行操作的符号称为运算符。 3:操作数 参与运算的常量或者变量称为操作数。 4:表达式 用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。 不同运算符连接的式子体现的是不同类型的表达式。 a a + b a > b 运算符: 算术运算符 赋值运算符 比较运算符 逻辑运算符 三目运算符 算术运算符: +,-,*,/, %,++,-- 2./和%的区别? /:除法,得到商 符号相同为正,不同为负 %:除法,得到余数 符号和第一个操作数相同 %的应用: x%3 等于 0 说明x能被3整除 x%2 等1 说明x是奇数 等0 说明x是偶数 3. ++,--运算符(讲完之后做练习) 作用:++就是加1,--就是减1。 自增自减运算符 ++,--在运算的时候,可以放在操作数的前面,也可以放在操作数的后面 A:单独使用 没有区别 B:参与其他操作使用 后面:先操作,再自增 前面:先自增,再操作 class OperatorDemo3 { public static void main(String[] args) { int a = 3; System.out.println(a); System.out.println("-------------"); //a++; //++a; //System.out.println(a); //int b = a++; int b = ++a; System.out.println(a); System.out.println(b); } } 4.赋值运算符: 基本:= 扩展:+= 扩展的赋值运算符隐含了强制类型转换: int a = 10; a += 20; a = (a的数据类型)(a + 20) 5. 关系运算符: ==,!=,>,>=,<,<= 注意: A:比较运算符的结果肯定是boolean。 B:你到底是使用"="还是使用"==",你自己要清楚。 6. 逻辑运算符: &,|,!,^ &&,|| 注意: 逻辑运算符用于连接关系表达式 结论: &: 有false则false |: 有true则true !:改变结果,取反 ^:相同false,不同true 记忆:情侣关系(男男,男女,女男,女女) 7. 最常用的逻辑运算符; !,&&,|| &&和&: 结果一样,但是&&具有短路效果,左边如果是false,右边不执行。 ||和|: 结果一样,但是||具有短路效果,左边如果是true,右边不执行。 8. 操作数据的个数。 三元运算符: 格式:?: (比较表达式)?表达式1:表达式2; 执行流程: 如果条件为true,运算后的结果是表达式1; 如果条件为false,运算后的结果是表达式2; 需求:获取两个数据中的最大值 嵌套使用(获取三个数的最大值) 9. 我们目前在写程序的时候,数据值都是固定的,但是实际开发中,数据值肯定是变化的, 所以,我准备把数据改进为键盘录入,提高程序的灵活性。 键盘录入数据的步骤: A:导包 import java.util.Scanner; 位置:class之前,上面 B:创建键盘录入对象 Scanner sc = new Scanner(System.in); C:获取键盘录入数据 int i = sc.nextInt(); 需求:键盘录入两个数据,并对这两个数据求和,输出其结果 分析: A:键盘录入两个数据 三步实现 B:对这两个数据求和 C:输出其结果 需求:键盘录入两个数据,获取这两个数据中的最大值 需求:键盘录入两个数据,比较这两个数据是否相等 10. 流程控制语句: A:顺序结构(没有基本格式,从上往下依次执行) B:选择结构(有格式) if switch C:循环结构(有格式) for while do...while 顺序结构: 写在前面的先执行,写在后面的后执行 11. if语句 三种格式。 11.1 if语句格式1: if(比较表达式) { 语句体 } 执行流程: 首先判断比较表达式看其结果是true还是false 如果是true就执行语句体 如果是false就不执行语句体 需求:1.如果我得了100分爸爸就给我买飞机 2.如果数字是10,就输出10这个数字 if语句的注意事项: A:比较表达式无论简单还是复杂,结果必须是boolean类型 B:一般来说: 有左大括号就没有分号,有分号就没有左大括号 11.2 if语句格式2: if(比较表达式) { 语句体1; }else { 语句体2; } 执行流程: 首先判断关系表达式看其结果是true还是false 如果是true就执行语句体1 如果是false就执行语句体2 需求:1.判断两个数的最大值(用if和三元实现) 2.判断两个数是否相等(用if和三元实现) 11.3 if语句的三种格式: 格式1:适合做一种情况的判断 格式2:适合做二种情况的判断 格式3:适合做多种情况的判断 if语句格式3: if(比较表达式1) { 语句体1; }else if (比较表达式2) { 语句体2; } … else { 语句体n+1; } 执行流程: 首先判断关系表达式1看其结果是true还是false 如果是true就执行语句体1 如果是false就继续判断关系表达式2看其结果是true还是false 如果是true就执行语句体2 如果是false就继续判断关系表达式…看其结果是true还是false … 如果没有任何关系表达式为true,就执行语句体n+1。 需求: 键盘录入学生成绩,根据学生成绩判断,输出学生等级 90-100 A 80-89 B 70-79 C 60-69 D 60以下 E 练习: 需求:键盘录入x的值,计算出y的并输出。 x>=3 y = 2x + 1; -1<=x<3 y = 2x; x<=-1 y = 2x – 1; 需求:键盘录入月份的值,输出对应的季节。 春 3,4,5 夏 6,7,8 秋 9,10,11 冬 12,1,2 获取三个数据中的最大值 if语句的嵌套。 if() { if语句 } 12 .switch语句的格式: switch(表达式) { case 值1: 语句体1; break; case 值2: 语句体2; break; … default: 语句体n+1; break; } 格式解释: A:switch表示这是switch语句 B:表达式 表达式的取值:byte,short,int,char JDK5以后可以是枚举 JDK7以后可以是String C:case后面跟的是要和表达式进行比较的值 D:语句体部分可以是一条或多条语句 E:break表示中断,结束的意思,可以结束switch语句 F:default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。 执行流程: 首先计算出表达式的值 其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。 需求: 键盘录入一个数字(1-7),输出对应的星期几。 13. switch语句的注意事项: A:case后面只能是常量,不能是变量。 B:多个case后面的值不能出现相同的。 C:default可以省略吗? 可以。但是不建议。 D:break可以省略吗? 可以。但是不建议。 容易出现case穿透。 E:default的位置一定要在最后吗? 可以在任意位置,建议在最后。 F:switch语句的结束条件 a:遇到break b:执行到末尾 练习: 1.class SwitchTest { public static void main(String[] args) { int x = 2; int y = 3; /* switch(x){ default: y++; break; case 3: y++; case 4: y++; } */ /* switch(x){ default: y++; case 3: y++; case 4: y++; } */ switch(x){ case 3: y++; case 4: y++; } System.out.println("y="+y); } } 1.输入数字,输出对应的星期 2.模拟做单项选择题,根据你的选择,给出对应的答案。(表达式是字符的情况) 3.用switch语句实现键盘录入月份,输出对应的季节 if语句和switch语句的各自使用场景: if语句使用场景: A:针对结果是boolean类型的判断 B:针对一个范围的判断 C:针对几个常量值的判断 switch语句使用场景: 针对几个常量值的判断 switch语句能够实现的,if一定能够实现。反之不成立 14. 循环语句组成: A:初始化语句 一条或者多条语句,这些语句完成一些初始化操作。 B:判断条件语句: 这是一个boolean表达式,这个表达式能决定是否执行循环体。 C:循环体语句 这个部分是循环体语句,也就是我们要多次做的事情。 D:控制条件语句 这个部分在一次循环体结束后,下一次循环判断条件执行前执行。 通过用于控制循环条件中的变量,使得循环在合适的时候结束。 循环: for while do..while for循环: for(初始化语句;判断条件语句;控制条件语句) { 循环体语句; } 执行流程: A:执行初始化语句 B:执行判断条件语句 如果是true:就继续执行。 如果是false:就结束循环。 C:执行循环体语句 D:执行控制条件语句 E:回到B 执行次数: A:初始化语句 只执行一次 B:判断条件语句 一次以上 C:循环体语句和控制条件语句 0次以上 需求: 请在控制台输出10次"HelloWorld" 15. 需求: A:请在控制台输出数据1-10 B:请在控制台输出数据10-1 16. 求出1-10之间数据之和 分析: A:获取1-10的数据 for循环就OK了。 B:定义一个求和变量,用于保存求和的结果。 求和变量的初始化值是0。 C:看如下的格式: 0+1=1 1+2=3 3+3=6 6+4=10 10+5=15 ... 看每一个式子: int sum = 0; 1 = 0 + 1 // sum = sum + 1; 3 = 1 + 2 // sum = sum + 2; 6 = 3 + 3 // sum = sum + 3; 10 = 6 + 4 //... 15 = 10 + 5 //... ... 求和公式: int sum = 0; for(int x=start; x<=end; x++) { sum += x; } System.out.println(sum); 现场做: 求和1-100案例: int sum = 0; for(int x=1; x<=100; x++) { sum += x; } System.out.println(sum); 17. 需求:求出1-100之间偶数和 分析: 如何判断数据是偶数。 什么样子的数据是偶数。 2,4,6,8,10,... x%2 == 0 18. 需求:求5的阶乘 规则: n! = n*(n-1)*(n-2)*...*3*2*1 19. while循环的格式: while(判断条件语句) { 循环体语句; } 变形格式: 初始化语句; while(判断条件语句) { 循环体语句; 控制条件语句; } 执行流程: A:执行初始化语句 B:执行判断条件语句 如果是true:就继续执行。 如果是false:就结束循环。 C:执行循环体语句 D:执行控制条件语句 E:回到B 比对for循环: for(初始化语句;判断条件语句;控制条件语句) { 循环体语句; } 需求: 1.请在控制台输出10次"HelloWorld" 2.求出1-10之间数据之和 3.求出1-100之间偶数和 20. for循环和while循环的区别 控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了, 而while循环结束还可以继续使用,如果你想继续使用,就用while, 否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。 使用场景: for循环适合针对一个范围判断进行操作 什么到什么之间,三位数等 while循环适合判断次数不明确操作 21. 我国最高山峰是珠穆朗玛峰:8848m,我现在有一张足够大的纸张,厚度为:0.01m。 请问,我折叠多少次,就可以保证厚度不低于珠穆朗玛峰的高度? 分析: A:定义统计变量,初始化值是0 B:折叠一次,厚度就是以前的2倍 C:折叠次数不明确,用while循环 class WhileTest2 { public static void main(String[] args) { int count = 0; int end = 884800; int start = 1; while(start<=end) { //折叠一次 start*=2; count++; } System.out.println(count); } } 22. do...while的格式: do { 循环体语句; }while((判断条件语句); 变形格式: 初始化语句; do { 循环体语句; 控制条件语句; }while(判断条件语句); 执行流程: A:执行初始化语句 B:执行循环体语句 C:执行控制条件语句 D:执行判断条件语句 如果是true:就继续执行。 如果是false:就结束循环。 E:回到B for(初始化语句;判断条件语句;控制条件语句) { 循环体语句; } 23. 三种循环的区别? A:do…while循环至少会执行一次循环体。 B:for循环和while循环只有在条件成立的时候才会去执行循环体 他们是可以相互转换的。 我们在使用循环的时候到底该选择谁呢? 优先考虑for循环,再考虑while循环,最后考虑do…while循环。 注意事项: 死循环 for(;;){} while(true){} 24. break的使用场景: A:在选择结构switch语句中 B:在循环语句中 注意: 离开使用场景的存在是没有意义的 break: 遇到break,就中断整个循环。 默认情况下,break只能中断它所属的那个循环。 25. continue的使用场景: 在循环语句中 注意: 离开使用场景的存在是没有意义的 continue 退出本次循环
以上是关于第二天笔记的主要内容,如果未能解决你的问题,请参考以下文章