本帖最后由 阿里云 于 2017-12-8 14:40 编辑
- 基础班
- 主要内容
- day01:java环境,常量变量,数据类型
- day02:Eclipse的概述和安装,运算符,Scanner键盘录入对象
- day03:流程控制语句,循环语句
- day04:Random随机数对象,数组
- day05:方法
- day06:断点调试
笔记帖子网址
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!)
- 配置环境变量
- 注释
- 单行注释://
- 多行注释:/**/
- 文档注释:/* / 用于描述方法、类的说明,调用时鼠标滑过可以查看注释
- 关键字(赋予特殊含义的单词)
- 特点
- 组成关键字的字母都是小写。
- 常见的代码编辑器有特殊的标记。
- 常量(程序中不可改变的量)
- 分类
- 字符串常量:"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
- 字符型:char -128-127
- 大写:ch>='A'&&ch<='Z'
- 小写:ch>='a'&&ch<='z'
- 数字:ch>='0'&&ch<='9'
- 布尔型:boolean
- B:引用数据类型(数组、类、接口)
- 标识符:用来给包、类、方法、变量起名字的符号
- 组成:Unicode字符(数字、大小写英文、汉字)、下划线、美元符。
- 注意:
- 常见命名规则:见名知意【英文单词>汉语拼音>字母】
- 包:(其实就是文件夹,用于对类进行管理)【全部小写,多级包用.隔开,多级包为一级一级的文件夹】
- 【类:每个单词首字母大写】
- 【方法和变量:一个单词字母小写,多个单词第二个单词开始首字母大写。缩写:尽量使用一个词】
- 变量
- 定义格式:数据类型 变量名=初始化值;
- 注意: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:中断
- 使用场景:只有这两个场景!
- 作用:结束所有循环!(如果循环嵌套使用的话,只中断break语句所在的最近的循环)
- continue:继续
day04- Random
- 生成一个随机数
- 导包:import java.util.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,选中要删除的断点,单击双×即可
- 断点必须加在有效的语句上
|
|