模块二的回顾: 1.常量:在代码的运算过程中,值不会发生改变的数据 a.整数常量:所有的整数 b.小数常量:所有带小数点的 2.0 c.字符常量:带单引号的,单引号中必须有且仅有一个内容 d.字符串常量:带双引号的 e.布尔常量:true false -> 可以当条件判断使用 f.空常量:null 代表数据不存在,所以不能直接使用 2.变量:在代码的运行过程中,会根据不同的情况而随时可以改变的数据 a.定义: 数据类型 变量名 = 值 ->将等号右边的值赋给等号左边的变量 b.数据类型: 基本类型:byte short int long float double boolean char 引用类型:类 数组 接口 枚举 注解 3.数据类型转换:等号左右两边类型不一致时,或者不同的类型做运算 a.自动类型转换:小转大 将取值范围小的类型赋值给取值范围大的类型 取值范围小的类型和取值范围大的类型之间做运算 b.强转:大转小 取值范围小的数据类型 变量名 = (取值范围小的数据类型)取值范围大的数据类型; 模块三的重点: all
第一章.IDEA的使用
一.idea的介绍
1.概述:开发工具 2.特点: a.idea是java写的,所以本地上必须有正确的jdk环境(JAVA_HOME) b.idea自动保存 c.不用我们打开dos命令窗口执行javac和java命令 d.idea会自动管理我们写的代码 3.相关开发工具:eclipse myeclipse 4.作用:加速我们的开发
二.idea的目录结构
先创建project,在project下创建module,在module下创建package -> 必须记住
三.Project的操作
1.创建Project
2.再次创建一个新的Project
3.关闭Project
file -> close project
4.打开Project
点close project出现以下界面
这里展示的是我们用过的project,我们可以直接点击,就能打开对应的project
四.module的操作
1.创建module
方法1:
方法2:
2.关闭module
a.对着要关闭的module右键 -> remove module -> 此时是关闭,不是真正的删除module b.再对着关闭的module右键 -> delete -> 从本地上真正删除
3.导入已有的module
如果导入的module的src是灰色的,需要改变一下目录的属性变成源目录
五.package的操作
1.创建
2.package的删除
右键 -> delete
3.package取名字规范
1.公司域名倒着写: 比如:尚硅谷 域名为:www.atguigu.com 我们写代码创建包:com.atguigu
六.创建类以及基本语句生成快捷键
1.生成main方法:输入main(psvm) -> 回车
2.生成输出语句:sout -> 回车
3.将变量名放到输出语句中:
a. 变量名.sout
b. 变量名.soutv -> 带字符串拼接格式的输出方式 -> 输出格式好看
七.基本设置
1.设置字体
file -> settings
2.设置提示的快捷键
file -> settings
快捷生成的提示设置:file -> settings -> keymap -> main menu -> code -> code completion -> basic
-> 右击 remove crtl+空格 -> 右击add keyboard shortcut -> alt+/
3.设置注释字体
file -> settings -> editor -> color scheme -> language defaults -> comments
八.快捷键
快捷键 | 功能 |
---|---|
Alt+Enter | 导入包,自动修正代码(重中之重) |
Ctrl+Y | 删除光标所在行 |
Ctrl+D | 复制光标所在行的内容,插入光标位置下面 |
Ctrl+Alt+L | 格式化代码 |
Ctrl+/ | 单行注释 |
Ctrl+Shift+/ | 选中代码注释,多行注释,再按取消注释 |
Alt+Shift+上下箭头 | 移动当前代码 |
先写等号右边的 10;
alt+enter回车自动生成定义
或者
10.var 回车自动生成定义
![]()
九.出现的问题
1.创建project时,要选择empty project 2.在运行代码时会出现"找不到对应的发行源"或者"不支持发行版本"或者"无效的发行源版本",证明本地jdk版本和idea中的language level不匹配 所以要匹配版本 file->project Structure->点击project->引入本地jdk->project level选择对应的版本 3.没有out路径的问题 out路径是专门存放idea自动编译生成的.class文件的 所以需要指明out路径 4.src是灰色的,对着src右键,选项中没有java class或者package
第二章.运算符
一.算数运算符
符号 | 说明 |
---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 如果符号前后都是整数,结果取整数部分 如果符号前后有一个是小数,结果就是正常小数 |
% | 模,取余数部分 |
package com.atguigu.arithmetic; public class Demo01_Arithmetic { public static void main(String[] args) { int i = 10; int j = 3; int add = i + j;//推荐使用 System.out.println(add);//13 System.out.println(i + j);//13 int sub = i - j; System.out.println(sub);//7 int mul = i * j; System.out.println(mul);//30 int div = i / j; System.out.println(div);//3 int mo = i % j; System.out.println(mo);//1 } }
+: 1.运算 2.字符串拼接:任何类型的数据遇到字符串都会变成字符串,此时+就不再是运算了,而是字符串拼接,将内容直接往后拼接
package com.atguigu.arithmetic; public class Demo02_Arithmetic { public static void main(String[] args) { int i = 10; int j = 3; System.out.println(i+j+"");//字符串的13 System.out.println(i+j+""+1);//字符串131 System.out.println(i + "" + j);//字符串103 System.out.println("i和j相加之和为:" + (i + j));//i和j相加之和为:13 } }
二.自增自减运算符(也算算术运算符的一种)
1.格式: 变量++ -> 后自加 ++变量 -> 前自加 变量-- -> 后自减 --变量 -> 前自减 自增自减只变化1 2.使用: a.单独使用: ++ -- 单独为一句,没有和其他的语句掺和使用 i++; 符号在前在后都是先运算 b.混合使用: ++ -- 和其他的语句掺和使用了(比如:输出语句,赋值语句) 符号在前:先运算,再使用运算后的值 符号在后:先使用赋值,使用完毕后,自身再运算
package com.atguigu.arithmetic; public class Demo03_Arithmetic { public static void main(String[] args) { int i = 10; i++;//++i; System.out.println("i = " + i);//i = 11 System.out.println("============================"); int j = 100; int result01 = ++j; System.out.println("result01 = " + result01);//result01 = 101 System.out.println(j);//101 System.out.println("============================"); int k = 100; int result02 = k++; System.out.println("result02 = " + result02);//result02 = 100 System.out.println(k);//101 System.out.println("============================"); int z = 100; System.out.println(z++);//100 System.out.println(z);//101 System.out.println("============================"); int x = 10; int y = 20; int result03 = x++ + --y + ++x;//10(x=11)+(y=19)19+(x=12)12 System.out.println("result03 = " + result03);//result03 = 41 System.out.println(x);//12 System.out.println(y);//19 System.out.println("============================"); int c = 10; c = c++;//c=10(c=11) System.out.println(c);//10 /* int c=10; int v1=c; //10 int v2=c+1; //11 c=v1; //10 System.out.println(c);//10 */ } }
三.赋值运算符
1.基本赋值运算符: = -> 先看等号右边的,再将右边的数据赋值给等号左边的变量 2.复合赋值运算符: +=: int i = 10; i+=2 -> i=i+2 -=: *=: /+: 取整数部分 %=: 取余数部分 3.注意:byte short 通过复合赋值运算符,jvm会自动转型
package com.atguigu.assignment; public class Demo01_Assignment { public static void main(String[] args) { int i = 10; i+=2;//i=i+2 System.out.println(i);//12 } }
package com.atguigu.assignment; public class Demo02_Assignment { public static void main(String[] args) { byte b = 10; // b = (byte) (b+1); b+=1; System.out.println(b);//11 } }
四.关系运算符(比较运算符)
1.结果:boolean型 -> 要么是true,要么是false 2.作用:做条件判断使用
符号 | 说明 |
---|---|
== | 如果符号前后相等为true,否则为false |
> | 如果符号前的数据大于符号后的数据为true,否则为false |
< | 如果符号前的数据小于符号后的数据为true,否则为false |
>= | 如果符号前的数据大于等于符号后的数据为true,否则为false |
<= | 如果符号前的数据小于等于符号后的数据为true,否则为false |
!= | 如果符号前后不相等为true,否则为false |
package com.atguigu.compare; public class Demo01_Compare { public static void main(String[] args) { int i = 10; int j = 20; boolean result01 = i==j; System.out.println("result01 = " + result01);//false System.out.println(i>j);//false System.out.println(i<j);//true System.out.println(i>=j);//false System.out.println(i<=j);//true System.out.println(i!=j);//true } }
五.逻辑运算符
1.作用:连接多个boolean结果的 2.结果:boolean型结果
符号 | 说明 |
---|---|
&&(与,并且) | 有假则假,符号前后有一个结果为false,整体就是false |
||(或者) | 有真则真,符号前后有一个结果为true,整体就是true |
!(非,取反) | 不是true就是false 不是false就是true |
^(异或) | 符号前后结果一样为false,不一样为true true^true -> false true^false ->true false^true ->true false^false ->false |
package com.atguigu.logic; public class Demo01_Logic { public static void main(String[] args) { int i = 10; int j = 20; int k = 10; boolean result01 = (i>j) && (i==k); System.out.println("result01 = " + result01);//false boolean result02 = (i>j) || (i==k); System.out.println("result02 = " + result02);//true boolean result03 = !(i>j); System.out.println("result03 = " + result03);//true boolean result04 = (i>j) ^ (i==k); System.out.println("result04 = " + result04);//true } }
符号 说明 & 1.单于,如果前后都是布尔型,有假则假,但是如果符号前为false,符号后的判断会继续执行 2.如果该符号前后都是数字,看做是位运算符 && 1.双于,有假则假,但是有短路效果,如果符号前为false,符号后的判断就不会执行了 | 1.单或,如果前后都是布尔型,有真则真,但是如果符号前为true,符号后的判断会继续执行 2.如果该符号前后都是数字,看做是位运算符 || 1.双或,有真则真,但是有短路效果,如果符号前为true,符号后的判断就不会执行了 package com.atguigu.logic; public class Demo02_Logic { public static void main(String[] args) { /* int a = 10; int b = 20; boolean result01 = (++a>100) & (++b>10); System.out.println("result01 = " + result01);//false System.out.println(a);//11 System.out.println(b);//21 int x = 10; int y = 20; boolean result02 = (++x>100) && (++y>10); //双于 有短路效果 System.out.println("result02 = " + result02);//false System.out.println(x);//11 System.out.println(y);//20 */ int a = 10; int b = 20; boolean result01 = (++a<100) | (++b>10); System.out.println("result01 = " + result01);//true System.out.println(a);//11 System.out.println(b);//21 int x = 10; int y = 20; boolean result02 = (++x<100) || (++y>10); //true 有短路效果 System.out.println("result02 = " + result02);//true System.out.println(x);//11 System.out.println(y);//20 } }问题:定义一个变量,随意给一个值,判断这个变量是否在1-100之间
1<=a<=100 -> 错误,这是数学写法
i>=1 && i<=100 -> java写法,用逻辑运算符拼接多个判断
六.三元运算符
1.格式 boolean 表达式?表达式1:表达式2 2.执行流程 先判断,如果是true,就走?后面的表达式1,否则就走:后面的表达式2
1.练习1
需求:小明考完试了,判断小明的分数是否及格,返回结果
package com.atguigu.ternary; public class Demo01_Ternary { public static void main(String[] args) { // 定义一个变量,表示小明的分数 int score = 99; String result01 = score>=60?"及格":"不及格"; System.out.println("result01 = " + result01);//及格 } }
2.练习2
有两个老人,年龄分别为70 80 求出两个老人的最高年龄
package com.atguigu.ternary; public class Demo02_Ternary { public static void main(String[] args) { // 定义两个变量,表示两个老人年龄 int old1 = 70; int old2 = 80; int max = old1>old2?old1:old2; System.out.println("年龄最大的老人年龄为 " + max);//80 } }
3.练习3
有三个老人,年龄分别为70 80 60 求出三个老人的最高年龄
package com.atguigu.ternary; public class Demo03_Ternary { public static void main(String[] args) { // 定义三个变量,表示三个老人年龄 int old1 = 70; int old2 = 80; int old3 = 60; int temp = old1>old2?old1:old2; int max = temp>old3?temp:old3; System.out.println("年龄最大的老人年龄为 " + max);//80 } }