输出
System.out.println() //在控制台输出, 输出之后换行, 小括号可以没有内容, 作为换行符
System.out.print() //在控制台输出, 输出之后不换行, 小括号中必须有内容
转义符: \字符
控制台输出 \ 必须写成
\\
\n: 换行符
\t: 制表符: tab 4个空格
\"
: 输出一个双引号
注释
学会写注释的习惯
注释写的位置: 1) 类名 2) 方法上 3) 很复杂的逻辑代码上
java的注释:
// 单行注释
/* */ 多行注释
/** */ javaDoc注释: 文档注释, 多行 使用的位置:类名,方法上
变量:
表示内存一块小空间, 用于存储数据,和取数据
内存中的存储, 临时存储
变量的要素:
-
变量名: 方便取数据, 类似门牌号
要求: 1) 使用的 数字,字母,下划线, 不能以数字开头
2) 不能使用java的关键字 比如: public class static void
3) 变量名/方法名/属性名 第一个字母小写(规范),遵循小驼峰命名法, 第一个单词的首字母小写. 后面每个单词的首字母大写 大驼峰命名法: 所有单词的首字母大写, 类名
4) 见名知意, 推荐使用英文单词
-
数据类型, 开辟的空间大小
-
基本数据类型 8种
-
数值类型(整数,浮点数) 6种
- 整数 4个
- byte: 1个字节 B 1B = 8b(位) 二进制
- 浮点数 2个
- 整数 4个
-
字符类型 1
-
布尔类型 1
-
-
引用数据类型(类类型) 后面学习 String 字符串
-
-
变量的值
整数 默认的数据类型: int 1 小数: 默认的数据类型: double 1.5
char类型值: 只能是单字符, 值必须使用单引号引起 ‘a’ ‘中’ ‘1’ ‘ab’ 错误
boolean类型值: 只有两个: true,false
String类型: 不能基本数据类型, 值必须使用双引号引起, 可以是n个字符组成, “a”, “abcd”,“”,“阿达的撒大大”
变量的使用:
三部曲:
- 声明变量(开辟空间) 语法: 数据类型 变量名;
2.给变量赋值 变量名 = 值; =赋值符号, 有方向, 把赋值符号的右边赋值给左边
- 使用, 取
1.变量
变量使用步骤:
- 变量声明
- 变量赋值
- 变量使用
1和2可以合并成一行代码
语法: 数据类型 变量名 = 值;
整型赋值的注意事项:
byte short int long
如果变量是 byte: 赋值的数字 ~128 - 127 之间, 可以直接赋值
byte b = 121;
但是如果数字超出该范围, 直接赋值报错
一句话: 整型类型赋值,数字超出类型的范围, 报错, 如果没有超出,不报错
浮点型:
float: 单精度浮点数
double: 双精度浮点数
小数的数据类型,默认是 double类型, double的优先级高于float,
float num = 1.2; 1.2 double类型, 相当于把double类型转换为float类型, 但是float类型比double低
相当于把高的转换为低的, 无法自动转换,报错
数据类型转换:
-
由低转换为高 , java 自动转换
-
由高转换到底: 无法自动转换, 需要手动强制进行转换: 数据类型(低) 变量名 = ()值(高的值);
double a = 1.2;
float b = (float)a;
int c = (int)a;
2.Scanner 输入
使用步骤:
- 在类上导入 Scanner类, 位于java.util包: import java.util.Scanner;
String/System 不需要导包, 位于java.lang包, 程序自动加载java.lang下的类
创建Scanner Scanner input = new Scanner(System.in);
调用next相关的方法, 进行输入 input .nextInt() input.nextDouble()
nextInt() 输入一个整型
nextDouble() 输入一个double浮点数
nextBoolean() nextFloat()…
但是: 不能输入char 没有nextChar()
next() 输入字符串 nextLine() 输入字符串
细节:
输入字符串: next() nextLine()
next() 输入有效字符串, 不包含 空格,tab,回车, 遇到空格,tab,回车,都结束输入
但是空格,tab,回车内容 保存到缓存中
nextLine() 输入字符串,包含空格, 但是nextLine() 前面有其他next() nextInt() nextDouble()…
nextLine() 不起作用, 无法输入
解决方案: 1. nextLine() 放在所有的next方法之前
2. nextLine() 不在第一个位置: 使用nextLine() 再加一个nextLine()
3. 运算符
1.算术运算符: + - / * %
①关于%运算符: 取模运算符(%)意为取余数,可适用于整数、char类型以及浮点数。
② 取模的正负号与被取模数同号
-2%3=-2 -2%-3=-2 2%-3=2
2.赋值运算符: =
3.比较运算符: > < >= <= == !=
4.逻辑运算符: &&(与) || (或) ! &(与) | (或)
5.++,-- 运算符
6.位运算: &(与) |(或) ^(异或)
1. 算术运算符
+
: 1) 数值类型 + 加法
2) 字符串与任意的类型 +, 表示拼接, 结果:字符串
/
: 1) 整数/整数 整除(结果取整)
2) 除数或者是被除数是浮点类型, 除法, 结果带小数
%
: 取余 5%2= 1
作用:
判断是否整除
得到某位的数值, 对某个数进行缩小归类
1.运算符
1.1 自加,自减
++
: 加1 语法 变量++ ++变量
前加加 ++变量
步骤: 先变量加1 , 后赋值, 整个表达式的值 = 变量的值
>int a = 10;
>
>//++a; //1) a = a+1 a=11 2) 赋值 (++a) = a; (++a) = 11
>
>int b = ++a; //1) a = a+1 a=11 2) 赋值 (++a) = a; (++a) = 11 3) 赋值符号: 把++a表达式的值赋给b
后加加: 变量++
先赋值: 变量的值赋给表达式 后加1: 变量加1
int a = 10;
int b = a++; //1) 先赋值, 把a的值赋值给(a++)表达式 10 2) 加1: a = a+1, a=11 3)再把表达式结果赋值给b b = 10
--
减1
前减减: --变量: 先减1, 再赋值
后减减: 变量–: 先赋值,再减1
2. 赋值运算符
= 语法: 变量 = 值; 变量 = 变量1; 不能写: 值 = 变量; 错误, 把赋值符号右边赋值给左边
+= a += b; a = a+b;
-= a -= b; a= a-b;
= a * = b; a = ab;
/= a /= b; a = a/b;
%= a%=b; a= a%b;
赋值符号与算术符号组合的赋值符号: 隐式数据类型转换
a += b; 把a+b的结果 转换为a的类型
3. 比较运算符
比较运算符结果: boolean类型: true/false
使用场景: 条件语句, 循环语句
== 等于, = 赋值符号
!= 不等于
>
大于
<
小于
>=
大于等于
<=
小于等于
4. 逻辑运算符
&&
短路与, 如果第一个表达式的结果为false, && 后面的表达式都不执行(类似电路的短路)
||
短路或: 如果第一个表达式的结果为true, || 后面的表达式都不执行(类似电路的短路)
!
非
&
与 没有短路
|
或 没有短路结果: boolean 类型
使用的场景: 条件,循环中, 连接多个比较表达式
5.三目运算符
语法: 条件(boolean的表达式)?值1:值2
如果条件为true: 返回值1, 如果条件为false, 返回值2
三目运算符可以嵌套:
条件1?值1:(条件2?值2:值3)
对if-else 某些场景的简化, if-else返回结果, 可以使用三目运算替换
6.位运算 二进制的位运算
&: 按位与 : 1:true 0:false 只要位上有一个为0, 结果:0 位上都为1, 结果: 1
|: 按位或: 只要位上有一个为1: 结果: 1 位上都是0: 结果: 0
!: 按位非 : 1 -取反-> 0 0-取反->1
^: 异或: 相同为0 , 不同为1 一个数异或某个数两次,等到自己
移位操作: 拓展
>>
右移
<<
:左移java: 十进制, 八进制, 十六进制:
int a = 123; //十进制数
int b = 0123; //八进制
int c = 0x123; //十六进制
分支语句
- if 分支语句: 条件语句 最重要的
- switch分支语句: 条件语句: 等值判断
if 语句
语法:
if(条件){ //满足条件执行的代码 }
执行步骤: 如果条件为true,就执行if后面大括号的中的代码, 如果为false, 跳过if
if(条件){ //满足条件执行的代码 }else{ //不满足条件执行的代码 }
执行步骤: 如果条件为true,就执行if后面大括号的中的代码, 如果为false, 执行else大括号代码
if(条件1){ //满足条件执行的代码 }else if(条件2){ } //... else{ //不满足条件执行的代码 }
执行步骤: 如果条件1为true,就执行if后面大括号的中的代码,
如果条件1为false, 并且条件2为true , 执行 else if大括号代码
…
如果前面都满足, 才执行else的代码
if嵌套:
if嵌套 if(条件){ if(条件2){ //... } }else{ //不满足条件执行的代码 if(条件3){ //... } }
注意:
如果 if,else, else if大括号中只有一行代码, 可以省略大括号, 但是希望大家写
如果大括号中不止一行代码, 一定不能省略大括号
switch 等值判断
switch(表达式)
case 值1:
//逻辑代码
break; //退出switch
case 值2:
//逻辑代码
break; //退出switch
//…
default:
//逻辑代码
break;
siwtch中表达式: 在jdk1.7之前,不支持String, 在jdk1.7以及之后支持String
类型: 基本数据类型, String, 枚举类型
case的值不能相同, 值唯一
break: 可以省略, 也可以不省略
default: 可有可无, default 可以在最前面, 也可以在最后面, 推荐写在最后面, 可以省略break,
写在最前面, 但是一定要写 break;
循环
重复写的代码, 考虑使用循环来优化
程序提供循环结构;
for 循环 使用最多
while循环
do-while循环
for循环
for(表达式1 ①;表达式2 ②;表达式3 ③){
//循环要做的事情 ④
}
表达式1: 初始化循环变量, 给循环变量赋值, 只执行一次
表达式2: 循环条件表达式, boolean类型的结果, 如果true: 表示继续循环, 如果false:结束循环
每循环一次执行一次
表达式3: 修改循环变量, 如果不改,可能出现死循环,每循环一次执行一次
1 --> 2 --true-> 4 --> 3 --> 2 -false-> 结束
使用循环的步骤:
- 判断是否需要使用循环, 看问题中是否有重复做的事情
- 找循环条件
- 找循环要做的事情
难点: 把循环条件,循环要做的事情转换为代码
细节:
表达式能省略, 两个分号一定不能省略
for循环的表达式细节:
表达式1 可以省略, 可以把表达式1 写在for循环的外面, 提升循环变量的作用域
表达式2可以省略, 默认永远为true, 出现死循环, 避免出现死循环,
也可以在循环体中使用 break关键字退出循环
- 表达式3可以省略, 循环变量没有改变,可能出现死循环,
也可以在循环体写表达式3
- 三个表达式都省略, 但是两个分号不能省略
for(;😉{ //死循环
//在循环体中使用break退出循环
}
累加,累乘: 循环
累加: 和初始值: 0
累乘: 积的初始值: 1
while 循环
while(循环条件){
//循环体
}
//把for循环的表达式1 写在循环之外, 表达式3写循环体的for循环
表达式1;
for(;表达式2;){
//循环体
//表达式3
}
while循环体包含: 重复做的事情, 还有修改循环遍历
for/while特征: 先判断,后循环, 可能一次都不执行, 一上来,循环条件为false
do-while
just do IT
do-while: 特征: 先循环,后判断, 最小循环次数: 1
语法:
do{
//循环体
}while(循环条件);
//注意: while后面小括号之后有一个分号,不能省略
改变,可能出现死循环,
也可以在循环体写表达式3
- 三个表达式都省略, 但是两个分号不能省略
for(;😉{ //死循环
//在循环体中使用break退出循环
}
累加,累乘: 循环
累加: 和初始值: 0
累乘: 积的初始值: 1
while 循环
while(循环条件){
//循环体
}
//把for循环的表达式1 写在循环之外, 表达式3写循环体的for循环
表达式1;
for(;表达式2;){
//循环体
//表达式3
}
while循环体包含: 重复做的事情, 还有修改循环遍历
for/while特征: 先判断,后循环, 可能一次都不执行, 一上来,循环条件为false
do-while
just do IT
do-while: 特征: 先循环,后判断, 最小循环次数: 1
语法:
do{
//循环体
}while(循环条件);
//注意: while后面小括号之后有一个分号,不能省略