命名
- 推荐命名格式
- 常量,全大写:
final float PI=3.1415;
final char MY_KEY='k';
- 类名,首字母大写:
class Hello_world{}
- 变量,首词小写后词驼峰:
int myIntegerValue=123;
- 文件名和类名一致
源文件名*.java,文件名要和源文件内的类名一致
//文件名是Hello.java,类名也必须是Hello
public class Hello{
void main(String[] args){ }
}
类型转换
- 高→低,强制转换: (类型符)变量名,注意:可能会溢出!!!
int a=128;
byte b = (byte)a; //byte 类型整数取值范围为 -128 ~ 127
//本例中,b内存溢出,值变成-128
- 低→高,自动转换
byte b=64;
int a=b;
- 取整(需要注意,整数间除/是向下取整——舍弃小数位,不是四舍五入!!)
int d=66/10; //d=6
System.out.println(4/3); //无小数位,默认视为整形,结果【向下取整!!】。输出:1
System.out.println(4/3.0); //输出:1.3333333333333333
System.out.println(4/5f); //输出:0.8
System.out.println(Math.round(4/5f)); //输出1
代码片段快捷键
vscode操作-用户代码片段的使用方法_myazwj的博客-CSDN博客_用户代码片段
已有的代码片段:
sout——System.out.println();
psvm——public static void main(String[] args){}
数学工具类 Math
//进行幂运算,比如3的5次方。
//要用到Math类,不能写成3^5
int a=Math.pow(3,5);
选择、循环结构
- if选择结构
if(布尔表达式 1){……}
else if(布尔表达式 2){……}
else if(布尔表达式 3){……}
else {……}
- switch 穿越
一般swith的case语句后要用break跳出switch,不执行后续的语句;
但有时候也会特意不写break,实现switch穿越的效果。例如:
for(int i=1; i<=5; i++){
switch(i){
case 0:
case 1:
case 2: System.out.println("i="+i+",i∈[0,1,2]"); break;
default:
System.out.println("i="+i+",i is not∈[0,1,2]"); break;
}
}
包机制
- 包机制是为了更好的组织类,包的形式类似于多级目录。
- 用import语句导入其他包的类,要导入某个包下的所有类可以用*通配符,例如:
获取输入(Scanner类)
import java.util.Scanner;
public class Loops {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //扫描,键盘输入
String inStr="";
System.out.println("请输入1:");
inStr=sc.next();
System.out.println("Next():\t\t"+inStr);
sc.nextLine(); //吸收next()剩下的换行符。
System.out.println("请输入2:");
inStr=sc.nextLine();
if(sc.hasNextLine()){
System.out.println("NextLine():\t\t"+inStr);
}
/*next()在输入有效字符之后,将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。
nextLine()方法的结束符只是回车符'\n'。
上述代码中nextLine放在next后,next()碰到回车符结束,此时’\n’这个回车字符会留在缓冲区里。
next()读剩下的’\n’,会被后面的nextline()读取并结束,所以读取了空字符串,没办法读取后续的键盘输入值。
经过验证,next(),nextDouble() ,nextFloat() ,nextInt() 等方法后面与nextLine()连用时都存在这个问题。
-------解决的办法是:
在每一个 next()、nextDouble() 、nextFloat()、nextInt() 等语句之后
多加个nextLine()方法,将Enter结束符过滤掉。
--------------
*/
sc.close();
}
}
类的方法,重载
在一个类中【传递参数不同】的两个同名方法。
例如:
int max(int a, int b){}
float max(float a, float b){}
对于面向对象,多态分为编译时多态和运行时多态。其中编译时多态是静态的,主要是指方法的重载,它是根据参数列表的不同来区分不同的函数,通过编译之后会变成两个不同的函数,在运行时谈不上多态。而运行时多态是动态的,它是通过动态绑定来实现的,也就是我们所说的多态性。
可变参数
方法的形参可以定义为数组或可变参数,实现向方法传递不定数量(0~n)个参数:
public static void main(String[] args){}
public int max(int... x){ int max_x; ……//循环读取每个x,比较最大值并赋值给max_x; return max_x; }