JAVA学习day07 JavaSE基础——构造方法 对象的创建步骤 static关键字

1.1 构造方法的概述和作用

 构造方法是为了创建对象并对对象中的成员进行初始化;
 格式:方法名和类名相同,没有返回值类型和具体的返回值。

1.2 构造方法的重载

 如果我们没有自己创建构造方法,系统将自动提供一个空参构造方法;
 建议用自己给的空参构造方法。

下面我们通过一个案例演示构造方法:

public class Phone {private String name;private String color;private double price;public  Phone(){System.out.println("空参构造方法");}public  Phone(String name){System.out.print("有参构造方法"+"\t");this.name = name;System.out.println(name);}
}
//测试
public class MyTest {public static void main(String[] args) {Phone phone = new Phone("小米");Phone phone1 = new Phone();}
}

运行结果:

图 1-1 运行结果截图

 在上面的代码中我们创建一个手机类,在这个手机类中我们加上了自己的空参和有参构造方法,在测试类中我们可以看到创建对象时会调用构造方法,传参和不传参是两种不同的结果。

下面我们来写一个完整的手机类代码:

public class Phone {private String name;private String color;private double price;public  Phone(){System.out.println("空参构造方法");}public  Phone(String name){System.out.print("有参构造方法"+"\t");this.name = name;System.out.println(name);}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getColor() {return color;}public void setColor(String color) {this.color = color;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public void show(){System.out.println(name+"手机"+color+"价格"+price );}
}
//测试
public class MyTest {public static void main(String[] args) {//Phone phone = new Phone("小米");Phone phone = new Phone();phone.setName("华为");phone.setColor("亮黑色");phone.setPrice(3999);phone.show();}
}

运行结果:

图 1-2 运行结果截图

1.3 长方形案例的练习

 定义一个长方形(RectangleDemo)类,定义求周长(length)和面积(area)的方法,然后定义一个测试类Test,进行测试。

public class Retangle {private double chang;private double kuan;public Retangle(){}public double getChang() {return chang;}public void setChang(double chang) {this.chang = chang;}public double getKuan() {return kuan;}public void setKuan(double kuan) {this.kuan = kuan;}public double getLength(){System.out.print("周长:");return 2 * (chang + kuan );}public double getArea(){System.out.print("面积:");return chang * kuan;}
}
//测试类
import java.util.Scanner;public class MyTest1 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入长");double chang = scanner.nextDouble();System.out.println("请输入宽");double kuan = scanner.nextDouble();Retangle retangle = new Retangle();retangle.setChang(chang);retangle.setKuan(kuan);System.out.println(retangle.getLength());System.out.println(retangle.getArea());}
}

运行结果:

图 1-3 运行结果截图

1.4 static 关键字

  ● static 关键字可以用来修饰代码块,成员方法和属性;
  ● 被 static 关键字的修饰特点:
  (1)随着类的加载而加载;
  (2)优先于对象而存在;
  (3)被类的所有对象共享;
  (4)可以直接通过类名调用,静态修饰的内容我们一般称为:与类相关的,类成员。
  ● static 的注意事项:
  (1)静态方法中没有关键字 this ;这是因为 this 是随着对象的创建而被使用;而静态方法是优先于对象存在的;
  (2)静态方法只能访问静态的成员变量和静态的成员方法。

1.5 静态变量和成员变量的区别:

 (1)所属不同:
   静态变量属于类,称为类变量,成员变量属于对象,称为实例变量;
 (2)在内存中的位置不同:
   静态变量存储在方法区的静态区;
   成员变量存储在堆内存;
 (3)在内存中出现的时间不同:
   静态成员随着类的加载而存在,随着类的消失而消失;
   成员变量随着对象的创建而存在,随着对象的消失而消失;
 (4)调用不同:
   静态变量可以通过类名调用,也可以通过对象名调用;
   成员变量只能通过对象名调用;

案例:

public class Person {static String name;static int age;char sex;public Person(){}public void work(){System.out.println(name+sex+"在上班");}public void rest(){System.out.println(name+"在休息");}
}
//测试类
public class Test {public static void main(String[] args) {Person person = new Person();//通过创建对象调用成员变量和成员变量person.name = "张三";person.age = 20;person.sex = '男';person.work();person.rest();Person.name = "王五";Person.age = 21;person.work();person.rest();}
}

运行结果:
 我们可以看到在使用类名调用静态变量后再次打印输出对象之前的赋值时值已经发生改变。

图 1-4 运行截图

在写代码时可以尝试用类名调用成员变量,会出现报错:

图 1-5 运行截图

1.6 猜数字小游戏

  猜数字小游戏(数据在1-100之间)
  代码:


import java.util.Random;
import java.util.Scanner;public class GuessNum {public static void main(String[] args) {Random random = new Random();int num = random.nextInt(100);for (int i = 0; i < 10; i++) {System.out.println("请输入一个整数(1--100之间)");Scanner scanner = new Scanner(System.in);int userNum = scanner.nextInt();if(userNum == num){System.out.println("猜对了!");return;}else if(userNum > num){System.out.println("猜大了");}else if (userNum < num){System.out.println("猜小了");}}}
}

运行结果:

图 1-6 运行截图

JavaSE基础——构造方法 对象的创建步骤 static关键字相关推荐

  1. JavaSE基础篇 | 对象的创建和使用

    目录

  2. 实例化,构造方法,this指针及其static关键字

    实例化,构造方法,this指针及其static关键字 目录 实例化,构造方法及其static关键字 一. 什么是实例化? 二. 实例化(对象初始化)的三种方法 1. 字段(又称为属性)就地初始化. 2 ...

  3. java 注销变量_[ Java学习基础 ] Java对象的创建和销毁

    类实例化可生成对象,实例方法就是对象方法,实例变量就是对象属性.一个对象的生命周期包括三个阶段:创建.使用和销毁. 创建对象 创建对象包括两个步骤:声明和实例化. 1.声明 声明对象与声明普通变量没有 ...

  4. 7 面向对象(成员变量和局部变量的区别,类作为形式参数的问题,匿名对象,封装,private关键字,this关键字,构造方法,类的初始化过程,static关键字)

    1:成员变量和局部变量的区别(理解) (1)在类中的位置不同 成员变量:类中方法外 局部变量:方法定义中或者方法声明上 (2)在内存中的位置不同 成员变量:在堆中 局部变量:在栈中 (3)生命周期不同 ...

  5. JVM基础知识---对象的创建过程

    对象的创建过程 一. 对象的创建过程 ①. 类加载检查 ②.分配内存 ③. 初始化零值 ④. 设置对象头 ⑤. 执行init方法 二. 对象的内存布局 ①. 对象头 ②. 实例数据 ③. 对齐填充 三 ...

  6. Java基础学习总结(10)——static关键字

    2019独角兽企业重金招聘Python工程师标准>>> 一.static关键字 原来一个类里面的成员变量,每new一个对象,这个对象就有一份自己的成员变量,因为这些成员变量都不是静态 ...

  7. JavaSE基础之(十六)final关键字

    十六.final关键字 16.1 16.2 16.3 16.1 16.2 16.3 引用类型的使用步骤 导包 使用import关键字导包,在类的所有代码之前导包,引入要使用的类型,java.lang包 ...

  8. JavaSE基础复习_day07

    java基础之面向对象 学习目标 第1章 面向对象思想 1.1 面向对象思想介绍 2.类和对象 第二章 类与对象 1.类的定义 2.类的使用 3.类的练习 4.内存分析 5.两类变量 第三章 方法 3 ...

  9. java static是单例_JAVA基础-static关键字及单例设计模式

    static关键字 基本概念使用static关键字修饰成员变量表示静态的含义, 此时成员变量由对象层级提升为类层级, 也就是整个类只有一份并被所有对象共享. 该成员变量随着类的加载准备就绪, 与是否创 ...

  10. Day19(JavaSE基础结束)

    3.对象的创建分析 this关键字 this关键字使用是在成员变量和类变量命名相同时候,用 this.成员变量 Pet.java: package com.oop.demo03;public clas ...

最新文章

  1. Qt 静态编译后的exe太大, 可以这样压缩.
  2. 枚举enum与#define 宏的区别?
  3. php实战https请求,用php发https请求
  4. JS——阶乘的三种做法(正向逆向递归)
  5. 第三次握手为什么没有序列号_TCP三次握手机制-深入浅出(实例演示)
  6. jdk中运行java程序的工具,采用JDK工具编译运行java程序
  7. “21天好习惯“ 第四期 — 4
  8. nexus9刷机全记录
  9. Linux命令之文件分割split命令
  10. Vue2+filter实现权限管理,使不同用户进入不同界面
  11. PowerDesigner16.5 逆向生成物理模型
  12. 白盒测试方法的简单理解(通俗易懂)
  13. HTTP流量复制引流工具(web压测及线上问题复现利器)--Gor(GoReplay)
  14. 微信公众号代运营机构靠谱吗?
  15. 流程绩效管理的目的与关键
  16. 聊一聊WEB前端安全那些事儿
  17. pdf怎么合并?合并有技巧
  18. 机器学习——决策树(decision tree)
  19. Chrome 浏览器最牛插件之一 Vimium
  20. uniapp 安卓APP应用宝整改问题记录

热门文章

  1. JS DOM节点(当前标签和同级、父级、子级..之间的关系)
  2. hive自带的字符串函数
  3. ThinkPHP基础
  4. Web API开发实例——对产品Product进行增删改查
  5. JAVA多线程(转)
  6. ios8来了,屏幕更大,准备好使用 iOS Auto Layout了吗?
  7. DHTML3(表格动态创建,删除行/列,表格行排序,行颜色交替高亮显示)
  8. Chrome扩展推荐
  9. 15种排序算法可视化展示
  10. 服务器 发布web项目路径,发布到 Web 平台