jdk:Java开发工具+jre
jre:jvm+类库 (运行环境)
jvm:虚拟机
DOS命令:
* cd 进入某个目录
* cd..返回上一目录
* d. 切换盘符
* cd\ 多级回退
* crl 清屏
* dri 显示当前目录中的所有文件
* exit 退出
JDK下载网站:www.oracle.com
安装环境设置:D:\develop\Java\jre7
环境变量设置:
* 添加:JAVA_HOME
* 步骤:1.计算机右键,属性,高级系统设置,高级环境变量,新建JAVA_HOME
* 2.计算机右键,属性,高级系统设置,高级环境变量,系统环境变量,
* path环境变量最前面添加%JAVA_HOME%\bin;
常量:字符串 整数 小数 字符 布尔 空常量(null)
定义变量的格式:
数据类型 变量名 = 初始化值;
数据类型:
基本数据类型
整数:byte(1) short(2) int(4) long(8) 默认int类型,long后面加L
浮点;float(4) double(8) 默认double类型,float后面加f
字符:char(2)可以存储中文
布尔:boolean(1)
为什么long类型是8个字节,float是4个字节,而float类型大于long类型?
答:float取值范围:是2的负126次幂到2的正127次幂
float取值范围:是2的负63次幂到2的正63次幂
标识符:
A:unicode字符,包括数字字符,英文大小写字母
B:下划线 _
C:美元符 $
注意事项:
A:不能以数字开头
B:不能是Java中的关键字
常见的命名规则:(见名知意)
A:包,全部小写,多级包点(.)隔开
B:类,一个单词首字母大写,多个单词每个单词的首字母大写
C:方法和变量,一个单词首字母小写,多个单词从第二个单词的首字母大写
变量定义的注意事项:
A:变量未赋值,不能直接使用
B:变量只在它所属的范围内有效(变量属于它所在的那对大括号)
C:一行上可以定义多个变量,但是不建议 例:int a,b;
a = 1;
b = 2;
类型转换:
隐式转换:(自动类型提升)byte,short,char -- int -- long -- float -- double
强制转换:目标类型 变量名 = (目标类型)(被转换的数据);
建议:数据做运算,结果应该是什么类型
例:byte b = 10;
byte c = 20;
byte f = b + c;
第一种解释:b + c因为b是byte类型,c也是byte类型,两个byte类型的值,做运算时,
会先将这两个byte类型的数据进行类型提升,都提升为了int类型
Java开发工具(Eclipse工作空间的基本配置)(掌握)
* A:程序的编译和运行的环境配置(一般不改)
* window -- Preferences -- Java
* 编译环境:Compiler 默认选中的就是最高版本。
* 运行环境:Installed JREs 默认会找你安装的那个JDK。建议配置了Java的环境变量(不配找不到)。
* 问题:
* 低编译(编译的版本比较低),高运行(运行的版本比较高)。可以。
* 高编译,低运行。不可以。
* 建议,编译和运行的版本一致。
* B:如何去掉默认注释?
* window -- Preferences -- Java -- Code Style -- Code Templates--Code
* 选择你不想要的内容,通过右边Edit编辑。
* 注意:请只删除注释部分,不是注释部分的不要删除。
* C:行号的显示和隐藏
* 显示:在代码区域的最左边的空白区域,右键 -- Show Line Numbers即可。
* 隐藏:把上面的动作再做一次。
* D:字体大小及颜色
* a:Java代码区域的字体大小和颜色:
* window -- Preferences -- General -- Appearance -- Colors And Fonts --Java修改 -- Java Edit Text Font--edit进行修改
* b:控制台
* window -- Preferences -- General -- Appearance -- Colors And Fonts -- Debug -- Console font
* c:其他文件
* window -- Preferences -- General -- Appearance -- Colors And Fonts -- Basic -- Text Font
* E:窗体给弄乱了,怎么办?
* window -- Reset Perspective
* F:控制台找不到了,怎么办?
* Window--Show View—Console
* G:取消悬浮提示(将鼠标停留在某个类上所出现的提示信息)
* window -- Preferences -- Java--Editor--Hovers。右边将Combined Hover勾去掉。
* 这样代码的悬浮框就不会自动出现了。如果想看提示,将光标悬浮在代码上,按F2即可。
运算符:
算数运算符
整数相除,结果还是整数
注意事项:
* a:+号在java中有三种作用,代表正号,做加法运算,字符串的连接符
* b:整数相除只能得到整数。如果想得到小数,必须把数据变化为浮点数类型
* c:/获取的是除法操作的商,%获取的是除法操作的余数
* %运算符
* 当左边的绝对值小于右边绝对值时,结果是左边
* 当左边的绝对值等于右边或是右边的倍数时,结果是0
* 当左边的绝对值大于右边绝对值时,结果是余数
* %运算符结果的符号只和左边有关系,与右边无关
* 任何一个正整数%2结果不是0就是1可以用来当作切换条件
字符串与任何数据做加法运算,都会产生一个新的字符串
逻辑运算符
& : 有假则假
| : 有真则真
! : 事物的另一面
^ : 相同为false,不同为true
&& 和 & 的区别:
& 是左右两边都需要进行计算
&& 如果左边为false,右边不执行
|| & | 的区别:
| 是左右两边都需要进行计算
|| 如果左边为true,右边不执行
三元运算符(三目运算符)
关系表达式 ? 表达式1 : 表达式2
顺序结构语句
从main开始的内容开始,自上而下执行代码
判断结构语句
三种表现形式
if(){
}
if(){
} else{}
if(){}else if(){}else{}
第三种方式else可以省略,但建议添加下
int a = 10;
if(a > 5){
} else if(a > 7){
} else if(a > 9){
} else{
}
选择结构语句
char ch = '+';
swicht(ch){
case '+':
...
...
// break;
default:
....
break;
case '-':
....
....
break;
}
1. switch后边的表达式可以放什么类型的?
byte short int char 枚举 String
2. case后边跟的是常量,常量的值取决于switch括号中表达式的类型,来进行填写相应类型的值
3. break 可以省略
4. default可以省略
5. switch结束有两种情况:(1)遇到break (2)遇到右大括号
6. break一旦省略,那么有可能发生case穿透,一旦发生穿透,就不会判断case后边常量的值了,直接输出case所控制的内容,直到遇到break或者switch的右大括号结束
7. default不一定要放在switch的最后,可以放在任意位置,但是switch执行时,必然要从第一个case开始进行匹配。
循环结构语句
for(初始化表达式; 条件表达式; 循环后操作表达式){
循环体;
}
执行流程:
1. 初始化表达式 只执行一次
2. 判断条件表达式的值是否为true
如果为true
执行循环体,再执行循环后操作表达式
如果为false
结束循环
3. 继续执行第2步骤,判断条件表达式的值即可。
初始化表达式;
for(;条件表达式;){
循环体;
循环后操作表达式;
}
for(【初始化表达式】;【条件表达式】){}
初始化表达式;
while(条件表达式){
循环体;
循环后操作表达式;
}
while(true){ // 无限循环、死循环
}
do{
循环体;
循环后操作表达式;
} while(条件表达式);
三种循环的区别:
控制跳转语句
break:应用场景 switch和循环
跳出当前所在循环
continue:应用场景 循环
结束本次循环,继续下次循环
for(int i=0; i<10; i++){
if(i == 3){
//break;
continue
}
System.out.println("i = " + i);
}
循环的嵌套
wai:for(int i=0; i<10; i++){
nei:for(int j=0; j<5; j++){
if(j == 3){
break wai;
}
System.out.print("*");
}
System.out.println();
}
int a = 10;
if(a > 5)
for(int i=0; i<10; i++){
System.out.println("i = " + i);
}
System.out.println("over");
Random随机数
1. 导包
import java.util.Random;
2. 创建Random对象
Random random = new Random();
3. 调用Random对象的nextInt(int x)方法
int num = random.nextInt(1);
num的取值范围在 [0,1) 包含0不包含1
需求:
我心中想一个数字,数字范围在1-100之间,比如88,你们来猜测这个数字是多少
思路:
1. 随机产生一个随机数
2. 先创建键盘录入对象
3. 无限循环,以便于录入你们想要猜测的数据
4. 让猜测的数据与我想的随机数进行大小的判断
如果大了
提示 数据大了
如果小了
提示 数据小了
如果中了
提示 数据猜对了
数组:存储同一种数据类型的多个元素的容器
元素:数组中的数据
声明数组:数据类型[] 数组名
数组的初始化:在内存中开辟一片连续的存储空间
动态初始化:在创建数组时,直接给出数组的长度即可
静态初始化:在创建数组是,直接给舒数组的每个元素是什么,但不给出长度。
给数组赋值: 数组名 = new 数据类型[数组的长度];
数组的长度:数组中元素的个数
如何定义一个数组呢?
数据类型[] 数组名 = new 数据类型[数组的长度];
int[] arr = new int[3];
int arr[] = new int[5];
注意:前后数据类型要一致。
如何来表示数组中的每个元素呢? 假如有这样的数组:int[] arr = new int[5];
需要使用索引、下标、角标来进行表示。 而 索引从零开始计数,最大索引为 数组的长度-1
数组名[索引] 表示数组的每个元素
java中的内存分配图解
int[] arr = new int[5];
栈:局部变量(方法声明上或方法内部定义的变量称为局部变量)
立即回收
堆:new 出来的对象、实体
等待垃圾回收器空闲的时候再进行回收
静态初始化:
数据类型[] 数组名 = new 数据类型[]{元素1, 元素2....};
简写形式:
数据类型[] 数组名 = {元素1, 元素2....};
注意:
简写形式有局限性。
局限性:数组的声明与赋值分开写的时候,简写形式行不通了。
如:int[] arr;
arr = {10, 20, 30}; // 这里编译失败
数组常见操作的两个问题:
数组索引越界异常:ArrayIndexOutofBoundsException
产生的原因:由于访问了数组中不存在的索引对应的元素造成的。
空指针异常:NullPointerException
产生的原因:由于数组的引用不再指向原来堆里面所对应的实体了,而是被重新赋值为null,如果再用这个引用去访问实体中的元素时,就会发生该异常。
数组的遍历(获取数组的元素):
int[] arr = new int[5];
for(int i=0; i<arr.length; i++){ // i表示数组的索引,而索引是从0开始计算的,并且索引的最大值是arr.length-1,故而初始化表达式以及条件确认完毕。
System.out.println(arr); // arr表示数组中的每一个元素
}
二维数组:
二维数组:其实就是元素为一维数组的数组。
定义格式:
A:数据类型[][] 数组名; (推荐的方式)
B:数据类型 数组名[][];
C:数据类型[] 数组名[];
初始化:
A:动态初始化
数据类型[][] 数组名 = new 数据类型[m][n];
m表示的是二维数组中一维数组的个数
n表示的是一维数组中的元素个数
B:静态初始化
数据类型[][] 数组名 = new 数据类型[][]{{元素...},{元素...},{元素...},...};
简化格式:
数据类型[][] 数组名 = {{元素...},{元素...},{元素...},...};
{} 表示二维数组
{{}, {}} 表示这个二维数组中有两个一维数组
二维数组名配合索引可以获取到每一个一维数组。
每一个一维数组配合索引名可以获取到数组中的元素。
假如我有一个二维数组:arr。
我要从中获取一维数组:arr[索引]
我要从中获取二维数组的元素:arr[索引][索引]
遍历二维数组:
for(int i=0; i<arr.length; i++){ // 获取大箱子中有多少个小箱子
for(int j=0; j<arr.length; j++){ // 获取小箱子中的每个元素
sop(arr[j]);
}
}
今日重点:
random随机数
一维数组的两种创建方式
遍历数组
求数组中的最值
二维数组的两种创建方式(动态初始化创建时,[m][n]其中n可以省略)
二维数组的遍历(循环的嵌套) |
|