黑马程序员技术交流社区
标题: 【石家庄校区】Java基础班前6天总结 [打印本页]
作者: 在路上的Mr.Li 时间: 2017-12-2 16:06
标题: 【石家庄校区】Java基础班前6天总结
Java基础班前6天总结
基础班
day01
· Java平台
· J2SE标准版:桌面应用程序的开发。是其他两者的基础。
· J2ME小型版:嵌入式应用程序,移动端开发,如机顶盒、手机等。已被安卓替代了做手机端开发。
· J2EE企业版:Web应用程序开发(服务器端开发)。例如天猫、京东等后台开发。
· 跨平台原理
· 平台:操作系统Window,Linux,Mac。
· JVM:实现跨平台需要依赖各个版本的Java虚拟机JVM(Window,Linux,Mac三个版本)。
· JRE和JDK
· JRE:Java运行环境,包括虚拟机和lib文件夹(程序所需核心类库)等,运行程序只需安装JRE即可。
· JDK:提供给开发程序者使用,包括JRE、开发工具(编译工具javac.exe、运行工具java.exe)。安装JDK不用安装JRE。
· JDK开发程序=>交给jre保证程序正常运行=>JVM实现程序跨平台运行。
· 运行源代码
· 在命令行命令中对原代码进行编译生成字节码文件:使用cd命令进入bin文件夹=>使用javac命令运行helloworld.java生成.class字节码文件=>使用java命令执行helloworld(不需要.class!)
· 配置环境变量
· 为了在任何目录下运行JAVA程序。
· 注释
· 单行注释://
· 多行注释:/**/
· 文档注释:/* / 用于描述方法、类的说明,调用时鼠标滑过可以查看注释
· 关键字(赋予特殊含义的单词)
· 特点
· 组成关键字的字母都是小写。
· 常见的代码编辑器有特殊的标记。
· 常量(程序中不可改变的量)
· 分类
· 字符串常量:"hello"
· 整数常量:5
· 小数常量:123.4
· 字符常量:'a'
· 布尔常量:true,false
· 空常量:null
· 变量(内存中的一块区域,程序执行过程中,其值在【一定范围内】发生改变,通过数据类型来限定)
· 格式【数据类型 变量名=初始化值;】
· 计算机存储单元
· 1 B(【字节是最小存储单元】)=8 b(位、比特)
· 1 KB=1024 B
· 1 MB=1024 KB
· ……
· 数据类型(java必须指定数据类型)
· A:基本数据类型(4类8种)
· 整型:默认用int
· 【字节byte表示范围:-128~127、正负2的8次方】
· short
· int
· long类型要加大写L,例如123L
· 浮点型:默认double
· float类型加F。
· double
· 字符型:char -128-127
· 布尔型:boolean
· B:引用数据类型(数组、类、接口)
· 标识符:用来给包、类、方法、变量起名字的符号
· 组成:Unicode字符(数字、大小写英文、汉字)、下划线、美元符。
· 注意:
· A:不能以数字开头
· B:不能是关键字
· 变量
· 定义格式:数据类型 变量名=初始化值;
· 注意:float数据类型直接加F,LONG数据类型直接加L
· 变量定义的注意事项:
· A:变量未赋值,不能直接使用。
· B:变量只在它所属的范围内有效。(大括号内有效)
· C:一行上可以定义多个变量,但是不建议。
· D:初期可以使用拼音做变量名,工作中严禁使用拼音,应使用英文单词。
类型的转换
· 隐式转换
· 转换规则:byte、short、char=>int=>long=>float=>double
· 注意:两个byte类型变量相加会转化成int,因为相加可能超出byte范围,自动加一级。
· 强制转换
· 格式:目标类型 变量名=(目标类型)(被转换的数据)
· 建议:一般不做强制转换,可能损失精度。
day02
· Eclipse
· src 源代码目录
· bin 编译文件目录
· 创建项目=>包=>类
· Eclipse快捷键及常用操作
· 内容辅助键 alt+/
· 注释
· 单行 选中内容,ctrl+/ 取消再来一次
· 多行 选中内容,ctrl+shift+/ 取消注释ctrl+shift+\
· 格式化 ctrl+shift+f
· 整行前移 选中内容,shift+tab
· ALT+ENTER属性;
· ct+d删除一行;
· shift+enter在任何位置下一行;
· 左手shift+字母切换大写
· 选中+shift+tab:取消一个缩进;选中+tab:整体缩进
· 格式化设置为ctrl+alt+f
· 选中包,ctrl+n:快速新建包和类。
· 重命名项目、包、类:右键-Refactor-Rename。或者F2
· 导入项目:在项目区域右键-import-General,展开-Existing Projects into Workspace-点击next-选择要导入的项目-注意:这里选择的是项目名称
· 导包快捷键:ctrl+shift+o
· shift+alt+a:开启框选
· ctrl+enter:貌似可以用来快速打断字符串
· 运算符
· 算术 +,-,*,/,++,--,%
· 字符与数字相加为ASCII码相加,与字符串相加为拼接。
· /:整数相除只能得到整数,要想得到小数必须有浮点数参与计算。【例如:3/4=0;3.0/4=0.75。】(隐式转换)
· +:字符参与加法运算,其实是拿字符在计算机中储存的数据值来参与运算的。‘A’+10=75,【记住:'A'65 'a'97 '0'48】。
· +:字符串的加法是与其他拼接,但是注意【运算是从左到右】。10+20+“ab”=30ab;“ab”+10+20=ab1020。
· 常用方法:数值转换为字符串:+空字符串,例如:10+“”。
· %:取余得数的正负已左边的正负为准。例如:-12%5=-2,12%-5=2。
· %用途:
· 判断是否是奇偶数:偶数x%2=0,奇数x%2=1。
· 赋值 =,-=,+=,*=……
· 注意:-=,+=,*=……【隐含了强制转换,例如:byte a=1; a+=10相当于a=(a的强制类型)(a+10),但是写成a=a+10错误】
· 关系 ==,!=,>,>=,<,<=
· 注意:把==写成=不会报错。例如:a==1输出true,a=1输出为1。
· 逻辑 &,|,^,!,&&,||
· ^为相同则false,不同则true。举例:判断情侣关系。
· 使用^实现两个int变量交换(boolean变量也可以,double、char、String不可以使用),不借助临时变量,不增加系统资源的消耗,代码如下:
a=a^b;
b=a^b;
a=a^b;
· 【&&与&的区别:&&有短路效果,左边为false则不再执行。&左边无论什么右边都执行。】
· 【||与|的区别:||为左边为ture则右边不执行。|左边无论什么右边都执行。】
· 闰年算法:(i % 4 == 0 && i % 100 != 0) || (i % 400 == 0)
· 闰年算法说明:四年一闰: 能被4整除的是,百年不闰: 能被100整除的不是,四百年再闰: 能被400整除的是
· 三元
· 格式:(关系表达式)?表达式1:表达式2;
· 执行过程:如果表达式为true,表达式1为结果,反之为表达式2。
· 返回值取表达式1或者表达式2。
· 键盘录入
· 使用步骤
· 导包:
· 手动录入:import java.util.Scanner;
· 导包还可在下一步报错时点击自动生成。
· 快捷键(推荐):ctrl+shift+o
· 创建键盘录入对象:
· Scanner sc=new Scanner(System.in);
· 接收数据:
· int i=sc.nextInt();
· String i=sc.next();
· double i=sc.nextDouble();
day03
· switch
· 语句格式:
switch(表达式){//【表达式只能是:bety,short,int,char,String,枚举。】
cast 值1:【只能是常量,而且值的类型要与小括号中一样】
语句体1;
break;//中断【如果这里不写break会继续运行一个语句体,这叫“case穿透”】
cast 值2:
语句体2;
break;
……
default://所有值不匹配执行
语句体n+1;
break;//最后的一个break可以省略
}
· 循环结构
· for(知道循环次数的场合使用)
· for(初始化;判断条件语句;控制条件语句)
{ 循环体语句;
}
· 多条语句:for (int strart = 0,end=arr.length-1;strart<=end;start++,end--) {}
· while【不知道循环次数的场合使用】
· 初始化语句;
while(判断条件语句){循环体语句;控制条件语句;
}
· 无限循环:while(true){};//while(true){}可以通过break中断
· do…while(不知道循环次数的场合使用,至少执行一次,一般不用)
· 初始化语句;
do {
循环体语句;
控制条件语句;
}while(判断条件语句);
· 三种循环语句的区别
· do……while循环语句至少执行一次循环体。
· for循环结束后,初始化的变量不能再被使用了,而while循环结束后,初始化的变量还可以继续使用。
· 推荐使用循环顺序:for=>while=>do…while。
跳转控制语句(离开使用场景没有意义!)
· break:中断
· 使用场景:
· switch语句中
· 循环中
· 作用:结束所有循环!(如果循环嵌套使用的话,只中断break语句所在的最近的循环)
· continue:继续
· 使用场景:循环中
· 作用:结束本次循环!
day04
Random
· 生成一个随机数
· 导包:import java.util.Random;
· 创建对象
· Random r=new Random();
· 获取随机数
· int number=r.nextInt(x);//x为任意整数
· 上面产生一个数0<=number<x的数据。 [0,x)
· 【获取1-100之间随机数:r.nextInt(100)+1;】
· 【注意:生成0-9的随机数:r.nextInt(10);】
数组(数组长度一旦确定不可改变!)
· 一维数组:
· 格式(推荐):数据类型[] 数组名; int[] arr;
· 格式2:数据类型 数组名[]; int arr[];
· 初始化数组:
· 动态初始化:只给出长度,系统给出初始化值。
数据类型[] 数组名=new 数据类型[数组长度];
对于长度很长的数组定义之后赋值用!
· 静态初始化:给出初始化值,系统决定长度。
数据类型[] 数组名=new 数据类型[]{元素1,元素2...}
数据类型[] 数组名={元素1,元素2...}
· 数组中的元素值:数组名[索引]。索引从0开始。
· 每一个对象都有默认值
· byte,short,int,long 0
· float,double 0.0
· char ‘\u0000’ ‘’
· boolean false
· 引用类型 null
· 栈:存储局部变量
· 堆:存储的是new出来的对象
· 数组存储的是一个地址值,不同名字的数组可能指向同一个内存地址。
· 【数组1 = 数组2; 是地址值的相等。】
· 遍历数组元素:for(int x=0;x<数组名.length;x++){数组};//注意长度减1。
· 获取最值:
int[] arr={11,33,77,22};
int min =arr[0];
for (int j = 0; j < arr.length; j++) {
if (min>arr[j]) { min=arr[j];}
}
day05
方法概述
· 定义格式:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...){ 方法体; return 返回值;}
· 格式解释:
A 修饰符:目前记住public static
B 返回值类型:用于限定返回值的数据类型
C 方法名
D 参数类型:用于限定调用方法时传入的数据类型
E 参数名:用于接收调用方法时传入的数据的变量
F 方法体
G return 结束方法,并且把返回值带给调用者
· 两个明确
· 返回值类型 明确功能结果的返回值类型
· 参数列表 明确有几个参数,以及参数的数据类型
day06
· 断点调试
· 作用
· 查看程序的执行流程
· 调试程序
· 添加断点方法:在代码区域的左边双击即可
· 运行加断点的程序:代码区域--右键--Debug As--Java Application
· F6 继续单步运行
· 看哪些区域
· 代码区域:看程序执行流程
· Debug区域:看程序的执行流程
· variable:变量的变化
· Console:看程序的输入和输出
· 关闭断点调试
· 按红色的停止按钮,再按右上角的"java"返回原来的界面
· 如何去掉断点
· 把加断点的操作执行一遍
· 在Debag视图中,找到Breakpoint,选中要删除的断点,单击双×即可
· 断点必须加在有效的语句上
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |