Java基础
第一节
1.第一个Java程序
public class HelloWorld {
public static void main(String[] args) {
System.out.println("HelloWorld");
}
}
2.快捷键
Windows常用快捷键/命令
CTRL+C--------复制 | 【Alt】+TAB窗口切换 |
---|---|
CTRL+X--------剪切 | 【Win】+D 显示桌面 |
CTRL+V--------粘贴 | 【Win】+L 屏幕锁定 |
CTRL+A--------全选 | 【Win】+E 打开“我的电脑” |
CTRL+Z--------撤销 | 【Win】+R打开“运行窗口",输入: |
calc—>启动计算器 | 盘符之间的切换: 盘符: 回车,如进入D盘, D: 回车 change directory |
mspaint—>打开画图板(不建议) | 进入指定目录 : cd soft |
notepad—>打开记事本 | 目录回退 : cd… 回到上一级目录 |
cmd—>CMD命令提示符 | : cd\ 回到盘符根目录 |
清屏 : cls |
编写java程序常用快捷键
alt+/: 用于程序输入时快速辅助查找 | ctrl+f: 搜索,替换 |
---|---|
alt+上下方向键: 上下移动代码 | |
ctrl+alt+上下方向键:上下复制代码 | |
ctrl+shift+f:格式化代码 | |
ctrl+shift+/:多行注释的设置 | |
ctrl+shift+:多行注释的取消 | |
ctrl+/:单行注释的设置与取消 | |
ctrl+shift+j:文档注释时就会显示作者@author 名字 | |
Alt+shift+a:块编辑 |
3.进制数
二进制:以0b(0B)开头,如0b1001。
八进制:以0开头。
十六进制:以0x (oX)开头。
第二节
1.数据类型
四类 | 八种 | 字节数 | 范围 |
---|---|---|---|
整数型(精确) | byte | 1字节(8位) | -128~127 |
short | 2字节 | -32768~32767 | |
int(默认) | 4 | -2147483648~2147483647 | |
long | 8 | -263~263-1 | |
浮点型(不精确) | float | 4 | -3.403E38~3.403E38 |
double(默认) | 8 | -1.798E308~1.798E308 | |
字符型 | char | 2 | 表示一个字符,如(‘a’,‘A’,‘0’,‘家’) |
布尔型 | boolean | 1 | 只有两个值true与false |
注:long a=2222L 定义long时,赋值的数字后面加字母L(l)。
float a=3333F 定义float时,赋值的数字后面加字母F(f)。
System.out.println()输出的整数默认为int类型十进制。
System.out.println()输出的小数类型默认为double
2.变量
2.1 格式
格式:数据类型 变量名 = 数据值;
如: int a = 100;
2.2 赋值的注意事项
(1)先定义,再赋值。(程序是顺序执行的,有先后顺序)
如:int a=b;
int b=19;(不正确,应该先对b进行定义和赋值,再将b赋值给a)
(2)不赋值,不能用。
(3)变量不能重复定义,并且赋值时类型得匹配。
(4)变量使用时有作用域的限制。
3数据类型转换
3.1转换方式:
① 自动类型转换
表示范围小的数据类型(如byte)可以直接转换成范围大的数据类型(如int),这种方式称为自动类型转换
格式:范围大的数据类型 变量 = 范围小的数据类型值;
②强制类型转换
表示范围大的数据类型(如int)不可以转换成范围小的数据类型(如byte),但可以强制转,这种方式称为强制类型转换
格式:范围小的数据类型 变量 = (范围小的数据类型) 范围大的数据类型值;
③ 转换规律
各种数据类型按照数据范围从小到大依次列出:范围小的类型向范围大的类型提升:
byte < short = char‐‐>int‐‐>long‐‐>float‐‐>double
byte、short、char 运算时直接提升为int,同样的道理,当一个int 类型变量和一个double 变量运算时, int 类型将会自动提升为double 类型进行运算
3.2例题
(1)自动类型转换:小转大,直接转
(2)强制类型转换:大转小,丢失精度,不建议
做法:在前面加想转成的类型,如(byte)
4.运算符
4.1算术运算符
注意:
(1)自增(++)、自减(–)
++ 运算,表示变量自己增长1。
– 运算,表示变量自己减少1。
变量前++ ,例如 ++i
变量后++ ,例如 i++
变量在独立运算时, 前++ 和后++ 没有区别 。
4.2 赋值运算
注释:
(1)b3=1+2 ,1和2是常量,为固定不变的数据,在编译的时候(编译器javac),已经确定了1+2的结果并没有超过byte类型的取值范围,可以赋值给变量b3,因此b3=1+2 是正确的。
常量优化机制:
有一些计算,非常简单,例如常量和常量的计算就非常简单,在编译阶段就可以把这些简单的运算计算完。
(2)反之, b4=b2+b3 ,b2和b3是变量,变量的值是可能变化的,在编译的时候,编译器javac不确定b2+b3的结果是什么,因此会将结果以int类型进行处理,所以int类型不能赋值给byte类型,因此编译失败。
4.3 关系运算符
注释:int a += 2
表示 a=a+2;
4.4逻辑运算符
注意:&&与||的特点
&& (短路与)
短路特点:符号左边是false,右边不运算
|| (短路或)
短路特点: 符号左边是true,右边不运算
例题:
package day05;
public class lianxi07 {
public static void main(String[] args) {
int a=1;
int b=2;
boolean c= a>1 && b++>1;
System.out.println(c);
System.out.println(b);
}
}
输出结果:
false
2
4.5 三元运算符
(1)三元运算符格式:
数据类型 变量名 = 布尔类型表达式?值1:值2
例题:
package day05;
public class lianxi07 {
public static void main(String[] args) {
int a = 1;
int b = 2;
int c = a > b ? a : b;
System.out.println(c);
}
}
输出结果:1
例题:
第三节
1.流程控制
1.1 if语句
1.1.1 三种格式
1.第一种格式
(1)书写标准
if (条件判断语句){
执行语句;
}
(2)执行流程
首先运行条件判断语句;
如果判断语句为true,则运行执行语句;
如果判断语句为false,则不运行执行语句。
2.第二种格式
(1)书写标准
if (判断语句){
执行语句1;
}else{
执行语句2;
}
(2)执行流程
首先运行判断语句;
如果判断语句为true,则运行执行语句1;
如果判断语句为false,则不运行执行语句2;
注意:if代码块和else代码块只会执行其中一个
3.第三种形式
(1)书写标准
if (判断语句){
执行语句1;
}else if{
执行语句2;
}
… …
else if{
执行语句n-1;
}else{
执行语句n
}
(2)执行流程
首先执行判断语句是否是true还是false
如果是true就执行语句体1
如果是false就继续判断关系表达式2看其结果是true还是false
如果是true就执行语句体2
如果是false就继续判断关系表达式…看其结果是true还是false
…
如果没有任何关系表达式为true,就执行语句体n+1。
1.2 switch语句
1.2.2 书写格式
switch(表达式){
case 目标值1: 执行语句1;break;
case 目标值2: 执行语句2;break;
case 目标值3: 执行语句3;break;
… …
case 目标值n: 执行语句n;break;
default:执行语句n+1; break;
}
1.说明
在上面的格式中,switch语句将表达式的值与每个case中的目标值进行匹配,如果找到了匹配的值,会执行对应case后的语句,如果没找到任何匹配的值,就会执行default后的语句。switch语句中的break关键字将在后面的做具体介绍,此处,我们只需要知道break的作用是跳出switch语句即可。
2.注意
switch语句中的表达式只能是byte、short、char、int类型的值,如果传入其它类型的值,程序会报错。
但是在JDK5.0中引入的新特性enum枚举也可以作为switch语句表达式的值,在JDK7.0中也引入了新特性,switch语句可以接收一个String类型的值。
char类型 在switch中的应用
int x = 1, y = 2;
char ch = '*';
switch (ch) {
case '+':
System.out.println("x+y=" + (x + y));
break;
case '-':
System.out.println("x-y="+(x-y));
break;
case '*':
System.out.println("x*y="+(x*y));
break;
case '/':
System.out.println("x/y="+(x/y));
break;
default:
System.out.println("不靠谱");
}
3、case穿透(下坠)
public class SwitchDemo02 {
public static void main(String[] args) {
int week = 1;
switch (week) {
case 1:
case 2:
case 3:
case 4:
case 5:
// 当 week 满足值 1、2、3、4、5 中任意一个时,处理方式相同
System.out.println("今天是工作日");
break;
case 6:
case 7:
// 当 week 满足值 6、7 中任意一个时,处理方式相同
System.out.println("今天是休息日");
break;
}
}
}
1.3 if和switch的区别
1、相同点:if语句和switch语句都可以表达分支结构
2、不同点:
1、if语句格式相对灵活,更加强大,switch语句相对弱小。所有的switch语句都可以被if语句替代。
2、if语句更多的是做一些连续性的判断,而switch语句更多的是做一些离散性的匹配
3、if语句每次都需要获取表达式的值,而switch只获取一次表达式的值,所以相对switch的效率高一些。
*总结:*
*if后可以没有大括号,但是只可以限制离它最近的一条语句,所以为了靠谱尽量写上大括号。*
2.循环结构
循环语句可以在满足循环条件的情况下,****反复****执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在一定的时候让循环判断条件值为false,从而结束循环,否则循环将一直执行下去,形成死循环。
Java中三种循环结构:
1 for循环
2 while循环
3 do while循环
2.1 for循环
1、格式
for(初始化表达式①; 布尔表达式②; 步进表达式④){
循环体③
}
例如:打印100遍“你好啊”
for(int i=0;i<100; i++ ){
system.out.println("你好啊");
}
2、 执行流程
执行顺序:① ②③④>②③④>②③④…②不满足为止。
①负责完成循环变量初始化
②负责判断是否满足循环条件,不满足则跳出循环
③具体执行的语句
④循环后,循环条件所涉及变量的变化情况
3、死循环
/*
* 什么是死循环
*
* 循环会永远执行下去,没有退出循环的条件
*
* */
public static void main(String[] args) {
for(;;){
System.out.println("111");
}
}
4、跳出循环
如果我们想让循环在某一步的时候结束或者跳过某些数据不要这些数据,该怎么办?
Java就提供了break,continue来实现控制语句的中断和跳转。
(1)break
break的使用场景:在选择结构switch语句中、在循环语句中
break的作用:跳出当前switch/循环语句
(2)l continue
continue的使用场景:在循环语句中
continue的作用:结束本次循环,继续下一次循环
(3)l 总结
break 结束整个循环
continue 结束本次循环,继续下一次循环
(4)注意
(img-gHtcorPc-1599482881225)]
3、死循环
/*
* 什么是死循环
*
* 循环会永远执行下去,没有退出循环的条件
*
* */
public static void main(String[] args) {
for(;;){
System.out.println("111");
}
}
4、跳出循环
如果我们想让循环在某一步的时候结束或者跳过某些数据不要这些数据,该怎么办?
Java就提供了break,continue来实现控制语句的中断和跳转。
(1)break
break的使用场景:在选择结构switch语句中、在循环语句中
break的作用:跳出当前switch/循环语句
(2)l continue
continue的使用场景:在循环语句中
continue的作用:结束本次循环,继续下一次循环
(3)l 总结
break 结束整个循环
continue 结束本次循环,继续下一次循环
(4)注意
break只用于结束循环语句,if语句不能用。