Javabean的特点 私人成员变量 公共的成员方法 利用get/set成员方法对私人变量进行取值/赋值 构造方法(构造器) 构造方法(也叫构造器)是一种特殊的方法,定义的位置是在类中,成员方法外,和成员变量,成员方法是平级关系,定义构造方法和定义一般的成员方法很像,它的特点是与类同名,但是没有返回值,其语法格式如下:

修饰符构造方法名(形参列表)
例如:
自定义学生类,其中有一个空参的构造方法
class Student{
public Student(){
System.out.println("这是学生类的空参构造方法");
}
}

构造方法的重载

class Person{
private int id;
public Person(){} //空参构造方法
public Person(int a){ //重载构造方法,有一个int型参数
id = a; //在构造方法中对实例变量赋值
System.out.println("这是带有一个参数的构造方法");
}
public Person(int a,int b){
System.out.println("这是带有两个参数的构造方法");
}
}

构造方法需要注意的事项

方法名与类名相同 没有返回值 也不能使用void 默认的构造方法 定义一个类时,如果没有显示的定义构造方法,这时系统会默认给这个类加上一个无参的构造方法,并且构造方法里面没有任何语句。但一旦定义了构造方法,系统将不会默认再给类添加任何构造方法。

构造方法的使用 在程序中使用new关键字创建一个类的实例化对象的时候,就是去调用该类的相应的构造方法,此时应注意,根据构造方法的形参列表的不同来调用不同的构造方法,调用不存在的构造方法肯定编译报错

class TestDemo{
//Demo d = new Demo(); //error,没有这样的构造方法
Demo d = new Demo(10); //调用的是自定义的,有一个参数的构造方法
}

标准的Javabean练习

定义一个员工类,自己分析出几个成员,然后给出成员变量,构造方法,getXxx()/setXxx()方法,以及一个显示所有成员信息的方法。并测试。

public class Employee {
private String name;
private int age;
private String employeeId;
//构造空参
public Employee(){
System.out.println("this is a constructor");
}
//通过set/get方法获取成员变量并赋值
public void setName(String name){
this.name= name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age=age;
}
public int getAge(){
return age;
}
public void setEmployeeId(String employeeId){
this.employeeId=employeeId;
}
public String getEmployeeId(){
return employeeId;
}
//构造实参
public Employee(String name,int age,String employeeId){
this.name=name;
this.age=age;
this.employeeId=employeeId;
}
//定义展示方法
public void show(){
System.out.println(name +" "+age +" " + employeeId);
}
}
测试类
public class EmploeeTest {
public static void main(String[] args) {
Employee emp1 = new Employee();//调用空参对象
Employee emp = new Employee("Tom",24,"25663");//调用实参对象,传参
emp.show(); //打印结果
}
}

this关键字 在构造方法中引用该构造方法正在初始化的对象 在方法中引用正在调用该方法的对象 this关键字是用来指代当前对象的,而从上面的例子可以看到,在构造方法中可以使用this关键字,说明:构造方法被调用的时候,其实对象在堆内存中已经被创建出来了,而构造方法的主要功能就是对实例对象的变量进行初始化的。

static关键字 static的真正作用就是用于区分成员变量,方法,内部类,初始化块这四种成员是属于类本身还是属于这个类的实例。

在类定义中,static相当于一个标志,有static修饰的成员属于类本身,没有static修饰的成员属于该类的实例对象。

为了区分这两种不同的成员变量,凡是有static修饰的成员变量/成员方法,称为类变量/类方法,没有static修饰的成员变量/成员方法称为实例变量/实例方法(构造方法不属于实例方法)

static修饰类的成员变量和成员方法(即:类变量,类方法)

静态成员变量(类变量)属于类,可用类名或对象名两种方式进行访问
静态成员方法(类方法)属于类,可用类名或对象名两种方式进行访问

被static关键字修饰的部分,有如下特点

随着类的加载而加载

优先于对象存在(因为类的加载优先于对象的创建)

被类的所有实例对象共享(存在于方法区中的静态区,如果是一个类变量的话,任何一个对象对该变量进行修改,都会在其他对象中得到体现),这也是我们在定义一个类时,判断是否使用静态关键字的标准

可以通过类名访问(类名.静态变量名/类名.静态方法名),也可以使用对象名来访问,推荐使用类名调用,因为静态变量/方法是属于类的

什么时候使用static关键字?使用static关键字的标准

当一个变量或者方法属于一个类,而不是属于这个类的实例对象时,就可以使用static来修饰,这样就可以使用类名.成员(变量/方法)的方式访问这个static变量/方法。 所有这个类的实例对象都能看到对静态变量(类变量)的更改

static方法重点注意事项

静态方法(类方法)中不能使用this关键字,this关键字代表的是当前对象的引用,但是static关键字修饰的方法是属于类的,随着类的加载而存在,但当类进行加载时,此时实例对象还没有被创建出来,这时是无法使用this关键字的 静态方法只能访问静态成员变量和静态成员方法 静态变量和实例变量的区别

所属

内存位置

出现时间

调用

静态变量

方法区的静态区

随类加载而加载

类名调用,对象名调用

实例变量

对象

堆内存

随对象创建而存在

对象名调用

实例变量和局部变量的区别

声明位置

内存位置

生命周期

初始值

局部变量

方法内,形参上

栈内存

随方法调用而存在

必须先定义,赋值再使用

实例变量

类内,方法外

堆内存

随对象创建而存在

有默认初始值

main方法是静态的 public static void main(String[] args) {} public 被jvm调用,访问权限足够大。 static 被jvm调用,不用创建对象,直接类名访问 void被jvm调用,不需要给jvm返回值 main 一个通用的名称,虽然不是关键字,但是被jvm识别 String[] args 以前用于接收键盘录入的 练习案例

猜数字小游戏(数据在1-100之间) 分析: A:程序产生一个随机数。(被猜的) B:键盘录入数据。(你猜的) C:把你猜的和被猜的进行比较 a:大了 b:小了 c:猜中了 D:给出多次猜的机会,猜中就结束。

import java.util.Scanner;
public class RandoTest {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int b = (int)(Math.random()*100-1);
while(true){
System.out.println("请输入一个数字");
int a = input.nextInt();
if(a > b){
System.out.println("大了");
}else if(a < b){
System.out.println("小了");
}else if(a > 100 && a < 1){
System.out.println("输入错误");
}else{
System.out.println("猜对了");
break;
}
}
}
}

代码块 代码块 在Java中,使用{}括起来的代码被称为代码块,根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块

局部代码块 在方法中出现,直接用{}括起来的部分,就是局部代码块 作用:限定变量生命周期,及早释放,提高内存利用率

构造代码块(也叫初始化块) 在类中,方法外出现;多个构造方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行,若多个构造代码块,则他们之间是顺序执行 作用:抽取构造方法中相同的部分,提高利用率

静态代码块 在类中,方法外出现,加了static修饰的{},或者可以理解成,加了static修饰的构造代码块 作用:给类进行初始化(类变量的初始化),在加载的时候就执行,并且只执行一次

代码块的作用

静态代码块是对类进行初始化的(主要是对类变量/静态变量进行初始化) 构造代码块和构造方法主要是对实例对象进行初始化的 局部代码块是用来规定变量的作用范围,提高内存使用效率,节省空间的 面试题 看代码说结果

java基础第7天的更多相关文章

  1. Java基础知识(壹)

    写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...

  2. [Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)

    如若转载请注明出处: http://www.cnblogs.com/wang-meng/p/5898837.html   谢谢.上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大 ...

  3. 【JAVA面试题系列一】面试题总汇--JAVA基础部分

    JAVA基础 基础部分的顺序: 基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法 线程的语法,集合的语法,io 的语法,虚拟机方面的语法 每天几道,持续更新!! 1.一个". ...

  4. 最适合作为Java基础面试题之Singleton模式

    看似只是最简单的一种设计模式,可细细挖掘,static.synchronized.volatile关键字.内部类.对象克隆.序列化.枚举类型.反射和类加载机制等基础却又不易理解透彻的Java知识纷纷呼 ...

  5. java基础练习 字符串,控制流,日历,日期等

    1,对基本控制流程的一些练习 package org.base.practice3; import org.junit.Test; /** * Created with IntelliJ IDEA. ...

  6. Java基础知识【下】( 转载)

    http://blog.csdn.net/silentbalanceyh/article/details/4608360 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...

  7. Java基础知识【上】(转载)

    http://blog.csdn.net/silentbalanceyh/article/details/4608272 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...

  8. java基础学习03(java基础程序设计)

    java基础程序设计 一.完成的目标 1. 掌握java中的数据类型划分 2. 8种基本数据类型的使用及数据类型转换 3. 位运算.运算符.表达式 4. 判断.循环语句的使用 5. break和con ...

  9. Java基础加强之多线程篇(线程创建与终止、互斥、通信、本地变量)

    线程创建与终止 线程创建 Thread类与Runnable接口的关系 public interface Runnable { public abstract void run(); } public ...

  10. java基础知识小总结【转】

    java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...

随机推荐

  1. 201-React顶级API

    一.概述 React是React库的入口点.如果您从<script>标记加载React,则这些顶级API可在React全局中使用.如果你使用npm的ES6,你可以写:import Reac ...

  2. PAT 1060 Are They Equal[难][科学记数法]

    1060 Are They Equal(25 分) If a machine can save only 3 significant digits, the float numbers 12300 a ...

  3. Could not load file or assembly 'Microsoft.Practices.EnterpriseLibrary.Common, Version=5.0.414.0, ...

    使用oracle数据库一个多月依赖这问题一直都得不到解决,最近任务不是很忙了,所以决定把这问题解决掉.写一篇文章做记录. 以上错误主要是net程序oracle数据库使用了Microsoft Enter ...

  4. Kylo 入坑记

    一.概述 Kylo,作为一个基于 Spark 和 NiFi 的开源数据湖编排框架,解决对数据湖获取.治理.感知和技术支持等诸多问题.Kylo 将数据湖的很多功能自动化,包括数据接入.准备.分析发现.P ...

  5. 解决margin重叠的问题

    margin重叠有两种情况: 1.兄弟级的垂直块之间,margin这个属性上下边距,会发生重叠的情况 解决办法:float浮动或display:inline-block 2 .父子级的块之间,子级的上 ...

  6. Net Quartz使用

    安装Quartz 已经先安装了2.5版本,现在换成2.4 程序包管理器控制台: PM> Install-Package Quartz -Version 2.4 正在尝试收集与目标为“.NETFr ...

  7. Asp.net下拉树实现(Easy UI ComboTree)

    场景描述:某个公司有多个部门并且部门存在子部门,通过一个下拉框选取多个部门,但是如果某个部门的子部门被全部选择,则只取该部门,而忽略子部门.(叶子节点全被选中时,只取父节点) 知识点:ComboTre ...

  8. Python学习札记(二十七) 函数式编程8 偏函数

    偏函数 NOTE 1.int()函数提供额外的base参数,默认值为10.如果传入base参数,就可以做N进制的转换: #!/usr/bin/env python3 import functools ...

  9. 利用HTML中map标签实现整张图片带有可点击区域的图像映射:

    实现效果说明:一整张背景图片,实现图标区域出现链接,可点击跳转到指定页面. <div class="brand"> <img src="images/b ...

  10. Yii关键概念

    basic/ 应用根目录 composer.json Composer 配置文件, 描述包信息 config/ 包含应用配置及其它配置 console.php 控制台应用配置信息 web.php We ...