一、局部变量和成员变量
package class4.oop1;
/**
* @Auther: Yu Panpan
* @Date: 2021/12/10 - 12 - 10 - 14:47
* @Description: class4.oop1
* @version: 1.0
*/
/**
* 变量:
* 局部变量:
* 定义:在方法内定义的变量称为局部变量
* 作用域:从变量定义开始到方法结束
* 注意:
* 1、局部变量只能在当前方法中使用,其他地方都不能使用
* 2、局部变量如果没有使用,只是定义的话,不会报错,但是如果有引用那么必须先进行初始化才能使用
* 3、局部变量没有默认值,所以在使用之前必须先进行初始化
*
* 成员变量:(全局变量)
* 定义:在方法之外,类内定义的变量称为成员变量
* 作用域:整个类体都可以访问
* 注意:
* 1、成员变量有默认值,系统会根据变量的数据类型默认的给默认值
* int-->0 boolean-->false String-->null
*
*/
public class VarDemo {
//属性(成员变量)
int age = 10;
// String name;
//定义方法
public void show(){
//局部变量
String name = "小鑫鑫";
System.out.println(name);
int a;
// System.out.println(a); 错误
System.out.println(age);
}
public void test(){
System.out.println(age);
age = 20;
System.out.println(age);
//局部变量
int age = 30;
System.out.println(age);
}
public static void main(String[] args) {
//创建对象
VarDemo vd = new VarDemo();
// vd.show();
// System.out.println(name); 错误
System.out.println(vd.age);
vd.test();
System.out.println(vd.age);
// System.out.println(vd.name);
}
}
二、构造方法
package class4.oop1;
/**
* @Auther: Yu Panpan
* @Date: 2021/12/10 - 12 - 10 - 15:55
* @Description: class4.oop1
* @version: 1.0
*/
/**
* 构造方法:
* 在创建对象的时候默认会调用构造方法,在堆中进行存储,主要目的是为了对成员变量进行初始化操作
* 语法:
* 修饰符:4个,后面再讲(public、protected、[default]、private)
* 返回值:构造方法没有返回值
* 方法名:构造方法的名称必须和类名保持一致
* 参数列表:和普通方法一样
* 方法体:主要是为成员变量进行初始化操作
* 注意:
* 1、当程序中没有显示的声明一个构造方法的时候,系统会给你一个默认的不带任何参数的空构造方法来供你创建对象使用
* 2、当你在程序中显示的声明了一个非空的构造方法,那么java编译器就不会再给你那个空参的构造方法了,
* 但是这时候你又想用空参的构造方法,那么只有再定义一个构造方法了
* 3、一个类中可以有多个构造方法
*
* 重载(overload):在一个类中可以有多个同名的方法,但是要求方法的参数列表不同
* 三方面的不同:
* 1、参数个数不同
* 2、参数类型不同
* 3、参数顺序不同
*
* 注意:
* 一般都需要使用构造方法的重载,因为成员变量可能会有很多个,但是我们只需要对部分成员变量进行初始化操作
*/
public class Teacher {
//属性(成员变量,全局变量)
String name;
int age;
public Teacher(){
System.out.println("空构造方法被执行了... ...");
}
//定义一个构造方法
public Teacher(String tname,int tage){
System.out.println("Teacher(String name,int age)被执行了... ...");
name = tname;
age = tage;
}
public Teacher(int tage,String tname){
}
public Teacher(int tage){
}
public void test(String name,int age){
}
public void test(int age,String name){
}
public static void main(String[] args) {
//创建对象
Teacher teacher1 = new Teacher();
teacher1.name = "小鑫鑫";
teacher1.age = 18;
System.out.println(teacher1.name);
System.out.println(teacher1.age);
Teacher teacher2 = new Teacher("张飞",20);
System.out.println(teacher2.name);
System.out.println(teacher2.age);
}
}
三、练习题
package class4.oop1;
/**
* @Auther: Yu Panpan
* @Date: 2021/12/10 - 12 - 10 - 16:51
* @Description: class4.oop1
* @version: 1.0
*/
public class Point {
//属性
int x;
int y;
public Point(){
}
//定义构造方法
public Point(int xx,int yy){
x = xx;
y = yy;
}
//定义个显示点坐标的方法
public void show(){
System.out.println("(" + x + "," + y + ")");
}
//定义提供两个坐标的方法
public void set(int xx,int yy){
x = xx;
y = yy;
}
//定义计算一个点到另外一个点的距离的方法
public double calcInstance(Point p){
return Math.sqrt((p.x-x)*(p.x-x) + (p.y-y)*(p.y-y));
}
//交换两个点坐标的值
public void changePoint(Point p){
//交换x
int temp1 = p.x;
p.x = x;
x = temp1;
//交换y
int temp2 = p.y;
p.y = y;
y = temp2;
}
public static void main(String[] args) {
// Point p1 = new Point(3,5);
// p1.show();
Point p1 = new Point();
p1.set(3,5);
Point p2 = new Point();
p2.set(6,9);
p1.show();
p2.show();
double result = p1.calcInstance(p2);
System.out.println(result);
System.out.println("两个点坐标交换之后的坐标值----------");
p1.changePoint(p2);
p1.show();
p2.show();
}
}
=========================================================================
学到这个阶段,建议大家都买几本书同步学习起来,根据个人10多年的开发经验和教育经验判断,技术书籍也阅读无数,对于初学者而言要找一本深度比较适合的书籍去系统的学习java是不太容易的事情,特别是对JavaSE高级部分的I/O流、Socket通信、多线程部分的讲解一定要有足够的深度才行,这部分内容对后期学习框架技术的底层工作原理和学习源码级别的内容有很大的帮助,根据以往自己阅读过的技术书籍,强烈建议购买下面的《新java四大名著四册套》,这套书是java基础阶段必备的工具类书籍,这几本书也是我平时工作中经常翻阅的基本书,几乎包含所有JavaSE基础和高级部分的内容,深入浅出带你一步步学习java的底层工作原理,要知道夯实基础对后面学习JavaEE部分是有至关重要的作用的。
这套书不建议大家一本一本的买,不划算,建议成套买,优惠的更多一些,像这类书籍建议购买正版图书,不要图便宜买盗版书,这几本书是比较厚的,也是在业界公认的几本权威技术类书籍,几乎所有大咖级别的都读过,不但在学习过程中可以用,在工作之余有时候过多关注一些业务层面的东西,很容易忽略一些技术底层的实现原理,茶前饭后也是可以拿出来翻阅一下把对应的内容补上来。
如果阅读后觉得不错,记得给我留言哦!!!这几本都是我个人觉得非常有必要入手的史诗级的技术书籍。下面是我同步发在知乎上的文章链接(包含购买这套书的链接),希望对大家有所帮助,谢谢!!!