System.out.println() //小括号可以没有内容, 作为换行符
System.out.print() //小括号中必须有内容,否则报错
\
学会写注释的习惯
注释写的位置: 1) 类名 2) 方法上 3) 很复杂的逻辑代码上
变量名(获取数据) 数据类型(控制变量的存储空间) 变量值
String是引用数据类型
整数默认int型,浮点数默认double型
char类型值: 只能是单字符, 值必须使用单引号引起 ‘a’ ‘中’ ‘1’ ‘ab’ 错误
声明,赋值,使用
1):如果变量是 byte: 赋值的数字 ~128 - 127 之间, 可以直接赋值,如果数字超出该范围, 直接赋值报错(直接!)
2):float num = 1.2; 1.2 double类型, 相当于把double类型转换为float类型, 但是float类型比double低
相当于把高的转换为低的, 无法自动转换,报错
3):char的值只能是单字符且需要要用单引号引起 ‘a’ ‘1’
由低转换为高 , java 自动转换
由高转换到低: 无法自动转换, 需要手动强制进行转换: 数据类型(低) 变量名 = ()值(高的值);
double a = 1.2;
float b = (float)a;
int c = (int)a;
电脑里保存的不是中文字符,是ASCII码,每一个中文字符都对应一个ASCII码
1):在类上导入 Scanner类, 位于java.util包: import java.util.Scanner; String/System 不需要导包, 位于java.lang包中的类程序会自动加载
2):创建Scanner Scanner input = new Scanner(System.in); (input可以自定义)
3):调用next相关的方法, 进行输入 input .nextInt() input.nextDouble()等等,
不能输入char ,没有nextChar() 这个方法,
next() 输入字符串 nextLine() 输入字符串
next() 输入有效字符串, 不包含 空格,tab,回车, 遇到空格,tab,回车,都结束输入,但是空格,tab,回车及后面的内容会保存到缓存中
nextLine() 输入字符串,包含空格, 但是nextLine() 前面如果有其他next() nextInt() nextDouble()…等方法时,nextLine() 不起作用, 无法输入
解决方案:
- nextLine() 放在所有的next方法之前
- nextLine() 不在第一个位置: 使用nextLine() 再加一个nextLine()
+:数值类型+数值类型,结果为数值类型; 任意类型+字符串类型,结果为字符串类型
int a = 10; int b = 20;
System.out.println(a+b+“101”); // 30101
System.out.println(“101”+a+b); //1011020
/:整数/整数,结果取整; 存在浮点数时,结果为小数
int num1 = 5; int num2 = 2;
System.out.println(num1 / num2); // 2
double num3 = 2;
System.out.println(num1 / num3); //2.5
System.out.println((double)num1 / num2); // 2.5
System.out.println(num1 / (double)num2); // 2.5
System.out.println((double)(num1 / num2); // 2.0
%:作用1:判断是否整除 2.得到某位数值
1234 % 10 ,得到个位
1234 / 10 %10 ,得到十位
1234 /100 %10 ,得到百位
1234 / 1000 % 10 ,得到千位
赋值符号与算术符号组合的赋值符号存在 隐式数据类型转换,a += b; 把a+b的结果 转换为a的类型
int a = 1; double b = 2; a = a+b;//报错
a+=b;// a=3 (a+b)的结果转换为int类型也就是a的类型
-= *= /= %=同理
int a = 2;
byte b = 1;
b = b+a;//报错
b +=a;//b=3
1):条件语句、循环语句 运算结果:boolean类型
1):条件语句、循环语句、连接多个比较表达式 运算结果:boolean类型
&&、||存在短路运算,&、|不存在短路运算,推荐使用&&、||
int a = 10;
int b = 6;
boolean rs = (a++ >11)&&(b++ >5);//10>11 false
System.out.println(rs);//false
System.out.println(a,b);//a = 11;b = 6
boolean rs = (a++ >11)&(b++ >5);
System.out.println(rs);//false
System.out.println(a,b);//a = 11;b = 7
三目运算符可以嵌套: 条件1?值1:(条件2?值2:值3),最好不要嵌套超过两次,可读性差
对if-else 某些场景的简化, if-else返回结果, 可以使用三目运算替换
++a : a = a+1; (++a) = a
a++:(a++)= a; a = a+1
一个数异或某个数两次,得到自己(简单得密码加密)
>>
右移
<<
:左移
java: 十进制, 八进制, 十六进制:
int a = 123; //十进制数
int b = 0123; //八进制
int c = 0x123; //十六进制
- if 分支语句: 条件语句 最重要的
- switch分支语句: 条件语句: 等值判断
如果 if,else, else if大括号中只有一行代码, 可以省略大括号, 但是最好不省略,提高可读性
1):case的值不能相同, 值唯一
2):break: 可以省略, 也可以不省略
3):default: 可有可无, default 可以在最前面, 也可以在最后面, 推荐写在最后面, 可以省略break,如果写在最前面, 一定要写 break;
- 判断是否需要使用循环, 看问题中是否有重复做的事情
- 找循环条件
- 找循环要做的事情
难点: 把循环条件,循环要做的事情转换为代码
细节: 表达式能省略, 两个分号一定不能省略
表达式1 可以省略, 可以把表达式1 写在for循环的外面, 提升循环变量的作用域
表达式2可以省略, 默认永远为true, 出现死循环, 避免出现死循环, 也可以在循环体中使用 break关键字退出循环
表达式3可以省略, 循环变量没有改变,可能出现死循环, 也可以在循环体写表达式3
三个表达式都省略, 但是两个分号不能省略
for(;{ //死循环
//在循环体中使用break退出循环
}
//把for循环的表达式1 写在循环之外, 表达式3写循环体的for循环
先判断,后循环, 可能一次都不执行, 开始循环条件为false
先循环,后判断, 循环体至少执行一次
do{
//循环体
}while(循环条件);