黑马程序员技术交流社区
标题:
【石家庄黑马JavaEE基础06期】分享基础班前六天笔记
[打印本页]
作者:
阿里云
时间:
2017-11-29 14:47
标题:
【石家庄黑马JavaEE基础06期】分享基础班前六天笔记
本帖最后由 阿里云 于 2017-12-8 14:40 编辑
基础班
主要内容
day01:java环境,常量变量,数据类型
day02:Eclipse的概述和安装,运算符,Scanner键盘录入对象
day03:流程控制语句,循环语句
day04:Random随机数对象,数组
day05:方法
day06:断点调试
笔记帖子网址
day07、day08:
http://bbs.itheima.com/forum.php?mod=viewthread&tid=385534&extra=
day09~day11:
http://bbs.itheima.com/thread-385535-1-1.html
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实现程序跨平台运行。
常用DOS命令(这是CLI命令行界面,另外是GUI图形化界面)
目录
打开控制台 winows+R => cmd
盘符切换 盘符名称: 例如 d:
显示目录下的文件及文件夹 dir
显示指定目录下的文件及文件夹 dir 目录名
改变指定目录 cd(chenge directory)
进入 cd 目录名称
回退 cd..
当前目录. 上级目录..
多级进入 cd 目录名称\目录下文件名
多级回退(回退至根目录) cd\
清屏 cls
上下箭头用于选择已经输入的命令
退出dos命令行 exit
JDK的安装
下载安装步骤在“JDK下载安装文档.doc”。
安装目录不要有空格等特殊符号、汉字。
不同的系统安装时不同版本。
安装在D盘开发文件夹:develop。
jdk包含jre,但是单独安装一个jre也无妨。
JDK的文件夹:src.zip文件为源代码
helloword案例
流程:编写【源文件】myprogram.java=>通过编译器compller=>生成【字节码文件】myprogram.class=>通过解释器interpreter=>实现程序结果【二进制】。
在jdk的bin文件目录下完成。
编写源文件代码
首先使用“publice class 类名{}”添加一个类,类名与文件名相同。
类中添加主方法,程序从主方法开始:public stratic void main(String[] args){}
主方法中添加输出语句:System.out.println("helloworld");
注意:Tab键缩进。
System.out.println:打印并换行
System.out.print:打印不换行
运行源代码
在命令行命令中对原代码进行编译生成字节码文件:使用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
大写:ch>='A'&&ch<='Z'
小写:ch>='a'&&ch<='z'
数字:ch>='0'&&ch<='9'
布尔型: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的概述和安装
安装可能出现问题
需要首先配置java环境
32位和64位要与jdk匹配
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+“”。
++、--一般为单独使用!但是也可以用在前面:参与其他操纵的时候,++在后面先拿变量操作,然后变量++;在前面反之。例如int i=1; a=i++输出为1因为【“i首先把值给表达式,然后自增1”】,a=++i输出为2。
%:取余得数的正负已左边的正负为准。例如:-12%5=-2,12%-5=2。
%用途:
判断是否是奇偶数:偶数x%2=0,奇数x%2=1。
【判断是否能被某个数整除:余数是零则可以整除。】
【获取一个数的个位、十位、百位……:取个数位1234%10=4,取百位1234/100%10=2,取千位1234/1000%10=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();
nextLine()不要和nextInt()或者nextDouble()混用.所以尽量不用nextLine(),用next()代替nextLine().
day03
流程控制语句(没有{}的语句只控制;之前的语句,也就是只控制下一行语句)
顺序结构
选择结构(我的选择顺序:三元运算符=>switch语句=>if语句。没有{}的语句只控制;之前的语句,例如:if(a==b)a+b=c;)
if
-注意:只声明没赋值的变量,通过if语句时没有赋值的话,执行程序运行时报错不能运行。
switch
语句格式:
switch(表达式){//【表达式只能是:byte,short,char,int,String,枚举。不能是double、float、long!!!】
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];}
}
二维数组:
动态初始化:只给出长度,系统给出初始化值。
数据类型[][] 数组名=new 数据类型[数组长度][数组长度];
静态初始化:给出初始化值,系统决定长度。
数据类型[][] 数组名={{元素1,元素2,...},{元素1,元素2,...}...};//一位数组长度可以不同
这样也正确:int[][] arr =new int[4][];//此时一维数组为null。
查看数组元素:Arrays.toString(arr);=>[1,2,3,4]
Arrays.toString(a)==Arrays.toString(b);这条语句不能判断两个数组相同!
day05
方法概述
定义格式:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...){ 方法体; return 返回值;}
格式解释:
A 修饰符:目前记住public static 关于static:静态的方法中不能直接调用非静态的成员方法,可以直接调用静态的成员方法;非静态的方法需要使用对象来调用.B 返回值类型:用于限定返回值的数据类型
C 方法名
D 参数类型:用于限定调用方法时传入的数据类型
E 参数名:用于接收调用方法时传入的数据的变量
F 方法体
G return 结束方法,并且把返回值带给调用者
两个明确
返回值类型 明确功能结果的返回值类型
参数列表 明确有几个参数,以及参数的数据类型
void
表示无返回值类型,方法只能单独调用,不能赋值调用和输出调用。
如果写return;则方法结束.
注意:return之后方法就结束了!在void方法中,可以用return结束程序.
方法重载
在同一个类中,出现了方法名相同的情况。
特点:
方法名相同
参数类型或数量其中之一不同就可以(也称为方法列表不同)
不能出现方法名相同,参数列表也相同的情况。
方法的形式参数
int a=10;
int b;
change(a,b);//a和b是实际参数,实际参与运算
形式参数:用于接收参数的变量,在方法的声明上
方法的参数如果是基本数据类型:形式参数的改变不影响实际参数
方法的参数如果是引用数据类型(数组为引用数据类型):形式参数的改变直接影响实际参数,但是如果有new出现时应该注意是否修改了数组的引用,可能不影响实际参数
day06
断点调试
作用
查看程序的执行流程
调试程序
添加断点方法:在代码区域的左边双击即可
运行加断点的程序:代码区域--右键--Debug As--Java Application
F6 继续单步运行
看哪些区域
代码区域:看程序执行流程
Debug区域:看程序的执行流程
variable:变量的变化
Console:看程序的输入和输出
关闭断点调试
按红色的停止按钮,再按右上角的"java"返回原来的界面
如何去掉断点
把加断点的操作执行一遍
在Debag视图中,找到Breakpoint,选中要删除的断点,单击双×即可
断点必须加在有效的语句上
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2