明解java学习笔记
-
在算数运算中,优先执行括号的运算,并且在写运算时使用括号可以方便一眼看出运算顺序
-
推荐分行声明变量,方便对于每一个声明进行注释。如果一行中需要声明多个变量,则用逗号隔开
-
整数/整数 舍弃了结果的小数部分
-
无法从未赋值的变量中取值,最好在声明变量时赋予其初值,明确进行初始化
-
System.in是与键盘相关联的标准的输入流。System.out是标准的输出流
-
从键盘输入:
第一、导入包 import java.util.Scanner
第二、声明并赋值 Scanner std = new Scanner(System.in);
第三、将输入值赋值给变量 int x = std.nextInt(); -
fina变量 final变量的名称推荐使用大写,并且final变量在赋初值之后不能更改 例如;final double PI = 4.1416
-
生成随机数
第一、导入包 import java.util.Random
第二、Random rand = new Random();
第三、int lucky = rand.nextInt(10);//输出0-9的随机数 rand.nextInt(n)部分是大于等于0小于等于n的随机数 -
在字符串的读入中 String s = std.next(); 在从键盘输入的第三部分改成这样子,可以进行读入,但是使用next()读入通过键盘输入的字符串时,空白字符和制表符被视为字符串的分隔符,空格和制表符后面的内容不能读出。要将包含空格在内的一整行输入作为字符串读入时,需要使用nextLine()
-
如果if…else中不添加大括号{},else对应的是离他最近的if
-
switch§{
case 1 : c = 1; break;
case 2 : c = 2; break;
default: c=0; break;
} -
直角三角形显示
for(int i=1;i<=n;i++)
for(int j=1;j<=i;j++) -
数组变量的声明:
int[] a;//优先采用这种,因数组的类型名为int[]型,这样子能够一目了然看清楚是int型还是int[]型。在返回类型为数组的声明中,一定要使用这种
int a[]; -
数组主体由new来创建。例如:new int[5]
数组变量是引用数组主体的变量 int[] a = new int[5]; -
与一般变量不同,数组的构成元素即使未明确进行初始化,也会被初始化为0
-
数组的长度=元素的个数(可以用数组变量名.length来获取)
并且数组元素的个数不是int类型,而是final int 类型,不可以赋值去改变元素的个数 -
输入数组元素的个数
int n = std.nextInt();//输入数组元素的个数
int[] a = new int[n]; -
数组的初始化和赋值:
int[] a = {1,2,3,};//多余的逗号在声明字符串数组时是有效的
数组的初值就是在大括号中的,用逗号隔开的值。创建数组中的元素的个数会根据初始值的个数自动进行设定
另外一种创建数组的正确方式:
int[] a;
a=new int[]{1,2,3};
使用new运算符创建数组时,new 元素类型 [] 的后面可以加上初始值
错误方式:
int[] a;
a={1,2,3,}; -
如果数组中元素的个数是一个已知的常数可以使用final变量表示
例如:final int n = 5;
int[] a = new int[n]; -
扩展for语句
for(double i:a)
sun+=i;
其中double是a数组元素的类型
扩展for语句遍历多维数组:
for(double i:a){
foe(double j:i){
System,out.println(“*”);
}
} -
对于数组进行倒序排序
for(int i=0;i<n/2;i++)
交换a[i]和a[n-i-1] -
数组的复制
如果使用赋值符号(=)对数组进行赋值,不会复制全部元素的值,只是改变了引用的目标而已,例如b=a;将数组a复制给数组b,是错误的
复制数组时需要使用循环语句逐一复制全部元素
当元素的个数不同时,需要将目标中的元素个数修改为复制源中的元素个数 -
多维数组的声明格式:
int[] x,y[];
x为一维数组int[]型,y为二维数组int[][]型
建议二维数组声明为int[][] y; -
方法间的参数交换是通过值传递进行的
-
多个方法中共享的变量一定要在方法外部进行声明,并加上static
-
当类作用域和块作用域存在相同名称的变量时,局部变量时可见的,字段会被隐藏。可以使用“类名.字段名”访问被隐藏的字段
-
Account account=new Account();
account是类类型变量,Account是类 -
构造函数与方法不同,构造函数没有返回值
-
对类类型变量应用的相等运算符==和!=会判断引用类型是否相同,而不会判断字段的值是否相等
-
可以将多个类汇总到一个源程序中,只将包含main方法的类型声明为public,其他的类都声明为非public类。一个源程序中不可以声明两个以上的public类
-
public class Main {
public static void main(String[] args) {
System.out.println(“Hello World!”);
}
public class Test1 {} //正确
}
public class Test2{}//错误
class Test3{}//正确
//
//同一个java文件(就是一个后缀为java的文本)只能有一个pulic class
//如果向使用多个class 有两中办法
// 1 在你的java文件里的public class类外面写class类 前面不能加public
// 2 在你的java文件里的public class类里面写public class类作为成员
- 实例方法可以访问所有的非静态字段,静态字段,非静态方法,静态方法。即实例方法既可以访问自身持有的变量和方法,也可以访问大家共享的变量和方法
类方法(静态方法带有static关键字)可以访问静态字段和静态方法,但不可以访问非静态字段和非静态方法。即类方法不具有自身持有的变量和方法,只可以访问大家共享的变量和方法 - main中调用其他方法必为类方法,因为main方法是类方法,有static关键字。并且一般调用方法都是类名.方法名();因为在同一个类中,可以直接使用方法名();
- 包名的首字母是小写字母
- 在类的派生中,构造函数不可以被继承
- 当方法重写上位类中的方法时,最好在声明中加上@override注解
- 私有成员不会被继承
- 不应该被扩展的类或方法需要声明为final
- 如果上位类类型的变量可以引用下位类类型的实例,就可以实现多态。在调用与多态相关的方法,要调用的方法会在程序运行时确定,执行动态联编
- 抽象类用abstrac关键字声明,具有以下性质,一、无法创建或者不应该创建实例。无法定义方法的主体,其内容在子类中具体实现
- 只要包含一个抽象方法,该类就必须声明为抽象类。抽象类中可以没有抽象方法
- 从抽象类派生的子类中未实现抽象方法,则抽象方法会被直接继承。
- 文档注释只有放在类、接口、构造函数、方法、字段的声明前面才会被识别
- 文档注释中可以插入HTML标记
- 未实现接口中所有方法的类必须声明为抽象类
- 当类的声明中同时存在extends和implements时,一定要先书写extends
- 多个接口用逗号隔开、
- 接口和类一样不可以多重继承