java近期所学:
一. 编译代码出现 “已在该编译单元中定义Arrays” 错误原因是引入的包名与所建包名相同 如:
import java.util.Arrays;
public class Arrays{ //会报错,因为名字不能相同
.......
}
二.初始构造方法
Java 构造方法有以下特点:
1.构造方法名与类名相同
2.构造方法没有返回值
3.再创建一个对象时,至少要调用一个构造方法
4.构造方法不能显示的直接调用,一般函数不能调用构造函数,只有构造函数才能调用构造函数
5.构造方法的主要作用时对对象初始化
6.只能与 new 运算符结合使用
public class Triangle{
int x,y,z;
public Triangle(int i,int j,int k){ //声明构造方法
x=i;
y=j;
z=k;
}
public static boolean judge(Triangle m){
if(Math.sqrt(m.x*m.x+m.y*m.y)==Math.sqrt(m.z*m.z))
return true;
else
return false;
}
public static void main(String[] args){
Triangle t1=new Triangle(3,4,5) //实例对象化t1,调用构造方法对其进行初始化
if(judge(t1)) // 调用judge()方法,判断t1成员变量能否构成三角形
System.out.println("这是一个三角形");
else
System.out.println("这不是一个三角形");
}
}
//如果为构造方法定义了返回值类型或使用 void 声明构造方法没有返回值,编译时不会出错,但 Java 会把这个所谓的构造方法当成普通方法来处理。
三.对this关键字的了解即相关知识点的补充
this:
- this修饰的变量为成员变量
- 方法形参若与成员变量同名,不带this修饰的变量是形参,带this的是成员变量
- 方法形参若与成员变量不同名,不带this修饰的变量是成员变量
class Student{
private String name;
int old;
public Student(){} //有构造方法时要定义一个无参构造
public Student(int old){
this.old=old; //this主要用来解决局部变量隐藏成员变量问题,this.old为成员变量
System.out.println(old);
}
public Student(int age,String name)
{
this.name=name; //this.name为成员变量,name为局部变量
old=age; //old为成员变量
System.out.println(this.name+" "+old);
}
public void show(){
System.out.println(old);
}
}
public class Demo{
public static void main(String[] args){
Student t1=new Student();
t1.old=20; //因为name被private修饰故不能被本类外的类调用,old可以
t1.show();
Student t2=new Student(20); //调用了构造方法public void Student(int old)
Student t3=new Student(20,"zhu");//调用了构造方法public void Student(int age,String name)
}
}
补充:
- 成员变量:类中方法外的变量,放在堆内存,有默认初始值,随对象存在而存在
- 局部变量:方法中的变量,放在栈内存,无默认初始值,随方法调用而存在
- private: 修饰成员变量,保护成员不被别的类调用,被private修饰的成员只能在本类访问,提高了代码的安全性