本帖最后由 小石姐姐 于 2017-11-30 10:56 编辑
基础第一天
java跨平台凭借着不同的操作系统上的JVM(Java虚拟机)
jdk包含jre和开发工具
jre包含jvm和java核心类库
JVM:Java Virtual Machine,Java虚拟机。Java实现的虚拟计算机,在不同平台模拟相同的运行环境。
JRE:Java Runtime Environment,Java运行环境。包括JVM和核心类库。
JDK:Java Development kit,Java开发工具包,包含了Java开发工具和JRE。开发工具包含编译工具(javac.exe)和打包工具(jar.exe)
dir:directory;
返回上层目录:"cd ..";
进入多层目录:"cd a\b\c";
第一个Java程序,HelloWorld.java。
定义类
-public class 类名{}(类名与文件名要一致)
并在大括号{}中添加一个主程序调用方法main()
-public static void main(String[] args){}
在main方法后面的大括号中进行编写代码
-System.out.println("HelloWorld");//注:一定要带分号;(英文状态下)
完整代码
public class HelloWorld{
public static void main(String[] args){
System.out.println("HelloWorld");
}
}
Java程序运行流程
Java文件(源代码)>通过编译器(javac.exe)编译>class文件(字节码文件)>通过解释器(java.exe)>输出结果
关于Notepad++的使用
下载Notepad++安装包后,双击打开选择简体中文,点击下一步,路径安装在develop目录下,点击下一步,接受协议,点击安装.
打开Notepad++,点击设置-首选项-新建,格式选择windows,默认语言选择Java,编码选择ANSI.点击关闭.
使用Notepad++新建Java文件编写输出HelloWorld
更改系统环境变量
更改Path环境变量,在最前方添加%JAVA_HOME%\bin;
新建变量JAVA_HOME属性设置为jdk的路径,例:d:\jdk1.6
注释:单行注释// 注释文字,
多行注释/* 注释文字 */,
文档注释/** 注释文字 */.
注释用来解释说明程序,提高阅读性.(注释不可嵌套)
关键字:被Java赋予特殊含义的单词.
特点一:关键字字母小写,二:常见的代码编辑器,对关键字有特殊的标记.
Java基本语法
常量
概念:程序执行过程中,值不可以发生改变的量.
分类:1.字符串常量: "HelloWorld"
2.整数型常量: 13,-34
3.浮点型常量: 12.34
4.字符型常量: 'a','k'
5.布尔型常量: true,false
6.空常量: null
变量
概念:内存中的一块区域.在程序执行过程中,值可以在一定范围内可以发生改变.
组成:1.数据类型
2.变量名
3.初始化值
数据类型 变量名 = 初始化值; 例:int a = 1;
数据类型
概念:Java是一种强类型语言,针对每一种数据都给出了明确的数据类型
分类:1.基本数据类型
2.引用数据类型(类,接口,数组)
基本数据类型:4类8种
分类:1.整数 字节数
byte 1
short 2
int 4
long 8
2.浮点型
float 4 单精度
double 8 双精度
3.字符型
char 2
4.布尔型
boolean 1
注意:1.整数默认是int,浮点数默认为double
2.定义long类型,要加L或l,建议大写
定义float类型,要加F或f,建议大写
标识符
概念:用来给包,类,方法,变量等起名字的符号
组成:1.Unicode字符
数字字符,英文大小写字母,汉字(不建议用汉字)
2.下划线_
3.美元符$
注意:1.不能以数字开头 例:12a
2.不能是Java中的关键字 例:public,class
常见命名规则
基本要求:1.见名知意,例:name,age
2.常见命名
1.包(文件夹,用于对类进行管理)
全部小写,多级包用.隔开 例:com,com.itheima.hehe
2.类
一个单词首字母大写 例:String
多个单词每个单词首字母大写 例:HelloWorld
3.方法和变量
一个单词首字母小写 例:age,name
多个单词,第二个单词开始首字母全大写 例:maxAge
变量定义的注意事项
1.变量未赋值,不能直接使用.
2.变量只在所属的区域有效,
3.一行上可以定义多个变量,但是不建议.
数据类型转换
1.隐式转换(自动转换)
byte,short,char --> int --> long --> float --> double
类型按照容量由小到大进行类型转换
2.强制转换(尽量不要使用强制转换,容易精度丢失)
目标类型 变量名 =(目标类型)(被转换的数据);
基础第二天
安装配置使用eclipse
eclipse是一个IDE(集成开发环境)
集成代码的编写、分析、编译、调试等一体化的开发软件
特点:免费、纯Java编写、免安装(解压即可使用)、扩展性强(可安装多种插件)
常见启动错误:没有配置JDK和JRE.JDK与eclipse安装版本不一致,同32位或64位
基本配置:
A:行号的显示和隐藏
显示:在代码区域的最左边的空白区域,右键 -- Show Line Numbers即可。
隐藏:把上面的动作再做一次。
B:字体大小及颜色
a:Java代码区域的字体大小和颜色:
window -- Preferences -- General -- Appearance -- Colors And Fonts -- Java -- Java Edit Text Font
b:控制台
window -- Preferences -- General -- Appearance -- Colors And Fonts -- Debug -- Console font
c:其他文件
window -- Preferences -- General -- Appearance -- Colors And Fonts -- Basic -- Text Font
C:窗体给弄乱了,怎么办?
window -- Perspective -- Reset Perspective
D:控制台找不到了,怎么办?
Window--Show View—Console
运算符
概念 :用于对常量和变量进行操作的符号.
表达式:用运算符连接起来的符合Java语法的句子,不同的运算符连接的表达式是不同类型的表达式.
分类 :1.算术运算符
2.赋值运算符
3.关系运算符
4.逻辑运算符
5.三元运算符
算术运算符:+,-,*,/,%,++,-- //注意:整数相除只会得到整数,得到小数要有小数参与运算.
+:用来对数值的加运算,还用于字符字符串之间的连接操作.
字符参与加法运算,是拿字符在计算机中存储设备中的数值来参加运算
字符床与其他字符做加法运算,做的是字符串的拼接.
char类型在算术运算的时候按照数值计算.
++:自增,用于对变量加一 --自减,用于对变量减一
运算符放在变量前和变量后的区别:
单独使用时(即只有i++;或++i;),没有区别,都是自增
参与其他操作时:
int a = i++;
先使用i本身的值作为i++表达式的值
然后i再自增(i自增后不影响之前i++表达式的值)
最后将等号右边的值赋给左边a
int a = ++i;
i先自增
然后将自增后的值作为++i表达式的值
最后将等号右边的值赋给左边
i--和--i同理
参与其他操作的时候,++或--在后面,先操作别的然后再自增或自减.
取余%操作的用途
1.判断奇偶数
2.判断是否被某个数整除
3.获取一个数的个位,十位,百位......
赋值运算符
基本的赋值运算符:=
扩展的赋值运算符:+=,-=,*=,/=,...
注意:扩展的赋值运算符,隐含了强制类型转换.例:变量a +=1;等同于a = (a的数据类型)(a + 1);
关系运算符:==,!=,>,>=,<,<=
关系运算符的结果是boolean型
注意:==为比较,=为赋值.不要弄混了.
逻辑运算符:&,|,^(异或),!,&&,||
&:有false则结果必为false,同为true则true
|:有true则结果必为true
^:相同为false,不同为true
!:取反,false则true,true则false
&&:逻辑与(短路与),左边为false则右边短路不执行,结果与&相同
||:逻辑或(短路或),左边为true则右边短路不执行,结果与|相同
三元运算符
格式 :关系表达式?表达式1:表达式2;
执行流程:1.计算关系表达式的值,
2.如果是true,表达式1是结果
3.如果是false,表达式2是结果
例:int a = 10;
int b = 20;
int c = (a > b)?a:b;
键盘录入
1.导入包:import java.util.Scanner
2.创建键盘录入对象:Scanner sc = new Scanner(system.in);
3.接受数据:int i = sc.nextInt();
基础第三天
选择流程控制语句
概述:是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的
if语句的三种格式:
if语句格式1:
if(关系表达式){
语句体;
}
执行流程
1.计算关系表达式的值,看是true还是false
2.true,执行语句体
3.false,不执行语句体
if语句格式2:
if(关系表达式){
语句体1;
}
else{
语句体2;
}
//使用Scanner录入两个相同的字符串,比较结果为什么是false
执行流程:
1.计算关系表达式的值,看是true还是false
2.true,执行语句体1
3.false,执行语句体2
if语句体3:
if(关系表达式1){
语句体1;
}else if(关系表达式2){
语句体2;
}
...
else{
语句体n+1;
}
//导入包:
1.手动导入
2.点击鼠标自动生成
3.快捷键,Ctrl+shift+o
switch语句格式:
表达式的取值:byte,short,int,char
JDK5以后可以是枚举
JDK7以后可以是String
case后面跟的是要和表达式进行比较的值
语句体部分可以是一条或多条语句
break表示中断,结束的意思,可以结束switch语句
default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。
switch(表达式){
case 值1:
语句体1
break;
case 值2:
语句体2
break;
case 值3:
语句体3
break;
.....
case 值n:
语句体n
break;
default:
语句体n+1;
break
}
执行流程:
1.首先计算表达式的值
2.与case依次比较,有对应的值,执行对应的语句
3.遇到break结束
4.如果没有相对应的值,执行default的语句,然后结束
循环流程控制语句
for循环语句的格式
for(初始化语句;判断条件语句;控制条件语句){
循环体语句;
}
执行流程;
1.执行初始化语句
2.执行判断条件语句,为false结束for循环.为true则执行循环体语句,
3.回到2
4.知道判断条件语句为false退出循环
while循环语句格式
while(判断条件语句){
循环体语句;
控制条件语句;
}
执行流程:
1.执行判断条件语句
2.为true执行循环体,之后继续执行循环体,为false退出循环
3.
do...while循环语句格式
do{
循环体语句;
控制条件语句;
}while(判断条件语句);
执行流程:
1.执行循环体语句
2.执行控制条件语句
3.执行控制条件,
为true,则回到2继续执行循环体
为false,则结束循环
控制循环语句
两个控制循环语句:
break:直接结束循环,或者switch语句
continue:结束本次语句,继续执行下一次
break:必须在switch或者循环之中
作用:
1.在switch语句中,用于结束case
2.在循环中,用于结束所在的循环
continue:在循环中使用
作用:结束本次循环,执行下一次
扩展:
switch语句的case穿透
如果switch的case语句中没有break, 则会继续执行下一个case的代码, 这称为case穿透
case穿透有时会导致代码出现问题, 但有时我们也利用case穿透简化代码
if语句不写大括号的格式
当if语句不写大括号时, 只有if语句后的第一条语句算作if语句的语句体, 其余不算
基础第四天
随机数(Random)
概述:用来产生一个随机数
使用步骤:1.导包,import java.util.Random;
2.创建对象,Random r = new Random();
3.获取随机数,int number = r.nextInt(10);
获取的数值范围:[0,10)包括0,不包括10
数组(Array)
概述:数组是存储同一种类型的多个元素的容器
定义格式:
1.数据类型[] 数组名;(推荐使用)
2.数据类型 数组名[];
区别:
int[] arr;定义了一个int类型的数组,数组名是arr
int arr[];定义了一个int类型变量,变量名是arr[]
数组初始化:
1.数组的初始化,是为数组开辟存储内存空间,并为数组的每个元素赋予初值.
2.两种方式初始化
1:动态初始化,只给出长度,由系统给出初始化值
数据类型[] 数组名=new 数据类型[数组长度]
2:静态初始化,给出初始化值,由系统决定长度
数据类型[] 数组名 =new 数据类型{元素1,元素2,元素3,....}
简化格式
数据类型[] 数组名={元素1,元素2,元素3,....}
数组的元素:数组中的单个数据
数组的索引:元素在数组中的位置序号,从0开始.或者叫角标
访问数组元素格式:数组名[索引]
数组常见问题:
1.ArrayIndexOutOfBoundsException:数组索引越界异常
产生原因:访问了不存在的索引
避免:不要访问不存在的索引
2.NullPointerException:空指针异常
产生原因:数组已经不再指向堆内存的数据了,却还使用数组名去访问元素
避免:判断数组是否为null,如果不是null,再操作:if(arr != null){操作;}
null只能赋值给引用数据类型的变量;包括类,数组,接口
遍历数组:
依次获取数组中的每一个元素
二位数组:
概述:元素为一位数组的数组
定义格式:
1.数据类型[][] 数组名;(推荐)
2.数据类型 数组名[][];
3.数据类型[] 数组名[];
初始化:
1.动态初始化
数据类型[][] 数组类型 = new 数据类型[m][n]
m表示二位数组中一位数组的数量
n表示一位数组中的元素个数
2.静态初始化
数据类型[][] 数组名 = new 数据类型[][]{{元素...},{元素...},{元素...},....}
简化格式:
数据类型[][] 数组名 = {{元素...},{元素...},{元素...},....}
基础第五天
方法(method):完成特定功能的代码块,也有叫函数(function)
作用:提高代码的可用性和可维护性
定义格式:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2.....){
方法体;
return;
}
格式解释:
修饰符: 目前记住 public static
返回值类型 用于限定返回值的数据类型
方法名 一个名字,为了方便我们调用方法
参数类型 用于接收调用方法时传入的数据的类型
参数名 用于接收调用方法时传入的数据的变量
方法体 完成功能的代码
return 结束方法,把返回值带给调用者
方法的两个明确:
1.返回值类型 明确功能结果的数据类型
2.参数列表 明确有几个参数,以及参数的数据类型
方法的调用:(有明确返回值的方法的调用)
1.单独调用.没有意义
2.输出调用,有意义,但意义不大.因为可能需要使用结果进行进一步的操作
3.赋值调用.推荐使用,赋完值想干嘛干嘛
注意:
所有的方法只有被定义之后才能被调用,main方法被Java虚拟机调用
方法的重载:
概述:在同一个类中,出现了方法名相同的情况
特点:方法名相同,参数列表不同,与返回值无关
参数列表不同:
1.数量不同
2.类型不同
不能出现方法名相同,参数列表也相同的两个方法
调用方法的时候,Java虚拟机会通过参数列表区别重载的方法.
方法重载无关的东西:
方法返回值无关;
与参数名无关
方法的参数如果是基本数据类型:形式参数的改变不影响实际参数.
形式参数:用于接收实际参数的变量
实际参数:实际参与运算的变量
地址传递,形参改变影响实参.对于引用数据类型
方法的形参是引用数据类型:
基础第六天
Eclipse断点调试(debug)
概述:Eclipse的断点调试可以查看程序的执行流程和解决程序中的bug
断点:其实就是一个标记
断点加在哪?
哪里不懂加在哪里
如何加断点?
在代码区域的左边双击即可
如何运行加断点的程序?
代码区域 -- 右键 -- debug As -- Java Application
看那些地方?
代码区域
Debug:断点测试的地方
Variables:查看程序的变量变化
ForDemo:被查看的源文件
Console:控制台
如何取出断点:
1.再次双击即可
2.进入Debug视图,Variables界面,找到Breakpoints,并点击,然后看到所有的断点,最后点击双叉.
注意:
断点必须打在有意义的句子上,
|
|