#java类设计 #static #Math类 #Random类

目录

类的设计

访问修饰符

静态空间与实例空间

Math类

Random类


类的设计

作为Java程序的基本要素,类由成员变量(也称属性)和成员方法组成。属性包括常量和变量,方法则包括构造方法和自定义方法,在定义类时,它们习惯上按如下次序排列:

public class Order{

    // final属性

// 属性

// 构造方法

// 自定义方法

}

类的属性一般定义为私有的,而类的方法定义为public。

  1. 访问修饰符

Java中定义了private、public、protected和默认的访问修饰符,这些修饰符控制着对类和类的成员变量以及成员方法的访问规则。另外,还可以辅助static和final关键字定义特殊规则。

访问包位置

类修饰符

修饰符

Private

protected

默认修饰符

Public

本类

可见

可见

可见

可见

同包其他类

可见

可见

可见

其他包的类

可见

同包的子类

可见

可见

可见

其他包的子类

可见

可见

public是公有类型的权限修饰符,使用public修饰的类、成员变量和成员方法,其他类都可以访问,包括任意包中的任意类以及子类。

private是私有类型的权限修饰符,使用private修饰的成员变量和成员方法,只能在本类中被使用,在子类中是不可见的,并且对其他包的类也是不可见的。

protected是保护级别的权限修饰符,它保护成员不会被其他包或非子类访问。也就是说protected修饰的成员只能被同一包中不同包但是子类的访问

default当不添加任何权限修饰符时,编译器会使用默认权限修饰符,只能在同一包中

  1. 封装(encapsulation)

封装是指把对象的属性隐藏在对象的内部,不允许外部直接访问和修改。Java规范中的设置器和 访问器就是实现封装的标准方法,它们用于设置和获取对象的属性值。

设置器方法的命名一般以set作为方法名的前缀,以属性名作为后缀。

访问器方法的命名一般以get或is作为方法名称的前缀,以属性名作为后缀。对于boolean类型的属性,应该使用is前缀定义访问器 方法。例如:

public class Car {

     private String color;

     private boolean running;

     public String getColor() {

         return color;

     }

     public void setColor(String color) {

         this.color = color;

     }

     public boolean isRunning() {

         return running;

     }

     public void setRunning(boolean running) {

         this.running = running;

     }   

}

  1. Object

在Java中,所有的类都直接或间接继承了java.lang.Object类,它是所有类的父类。Object类中常用的两个方法为equals()和toString()方法。任何类都可以重写Object类中的方法。

Object类处于Java继承层次中的最顶端,它封装了所有类的公共行为。

Object类的equals()方法采用的是==运算比较,也就是只有两个引用变量指向同一对象时才相等。而实际上我们期望该方法进行对象的内容比较,因此子类中通常将equals()方法改写。

类的toString()方法返回对象的描述信息,在Object类中该方法返回对象的类名及对象引用地址。子类中通常要提供自己的toString()方法,以便更好地描述对象。

  1. 对象的创建与构造方法

类是创建对象的模板,而对象是类的实例。对象是一组属性和方法的封装体,创建对象要用到保留字new,对象的构造方法的语法格式为:

引用变量 = new构造方法(参数)

有关构造方法有以下几点说明:

  1. 创建对象时将用到构造方法,系统自动调用参数匹配的构造方法为对象初始化。
  2. 构造方法的名称必须与类名同名,构造方法没有返回类型。
  3. —个类可提供多个构造方法,这些构造方法的参数不同。
  4. 如果程序中未提供构造方法,系统自动提供空的无参构造方法。
  1. 对象引用变量与对象关系

对象创建后,将对象的引用赋值给某个引用变量,就可以通过该变量访问对象的成员属性和方法,成员的调用通过“.”运算符实现,格式为:

对象名.属性

对象名.方法(参数)

  1. 静态空间与实例空间

带有static修饰的属性称为静态属性或类变量;带有Static修饰的方法称为静态方法, 在静态方法内可以直接讨问静态属性或调用其他静态方法,静态属性在分配空间时与对象无关,静态空间的引用是与类关联的,一个类的静态属性成员只有一份,访问静态成员可以通过类名(在自己类中也可以直接访问),也可以通过对象。静态属性是共享的,该类的任何对象均可访问它

【思考】静态属性归属类,因此必须指明是访问哪个类的静态成员,如果是在自己类中则可以省略,由于对象由类创建,自然对象能标识其所属类,因此也允许用对象做前缀访问静态属性。非静态属性也称实例变量,也就是说,要通过实际的对象才能访问,不同对象其实例变量的值通常是不同的。

  1. Math

Java 的 Math类包含了用于执行基本数学运算的属性和方法,如平方、对数、平方根和三角函数等。下表为 Math 类的一些常用方法。

方法

描述

abs(x)

返回参数x的绝对值,不改变x的数据类型

sqrt(x)

计算x的平方根,返回值为 double

cbrt(x)

计算x的立方根,返回值为 double

floor(x)

返回小于x的最大整数(向下取整),返回类型为 double

ceil(x)

返回大于等于x的的最小整数(向上取整),返回类型为 double

round(x)

x四舍五入取整,返回值为 long

pow(x,y)

计算xy次方,返回类型为 double

max(x,y)

计算xy的最大值,返回类型为 double

min(x,y)

计算xy的最小值,返回类型为 double

sin(x)

求x的正弦值

cos(x)

求x的余弦值

tan(x)

求x的正切值

asin(x)

求x的反正弦值

acos(x)

求x的反余弦值

atan(x)

求x的发正切值

toDegrees(x)

将x转化为角度

toRadians(x)

将x转换为弧度

PI

π

  1. 例如:

Math.pow(x, y) Java 的幂运算,意思为求xy次方,x和y可以是整型也可以是浮点型,该方法返回一个浮点型的值

例子:

double a = Math.pow(2, 3); // 23次方,并将其赋值给一个double型的变量a

System.out.print(a);

执行结果:8.0

  1. 例如:

Math.sqrt(x) Java 开平方的方法,意思为求x的平方根,x可以是整型也可以是浮点型,该方法返回一个浮点型的值。

例子:

double a = Math.sqrt(4);// 4的平方根,并将其赋值给一个double型的变量a

System.out.print(a);

执行结果:2.0

  1. Random

在 Java 中有一个 Random 类,他可以在指定的取值范围内随机产生数字。要想使用 Random 类,第一步需要导入 java.util.Random 这个包。例如:

import java.util.Random;

第二步需要创建 Random 对象。

Random random = new Random();

创建完 Random 对象之后,我们就可以使用它提供的方法来创建随机数了。

方法名

方法说明

nextDouble() 方法

返回 0.0 1.0 之间的 double 类型值

nextFloat() 方法

返回的是 0.0 至 1.0 之间的 float 类型值

nextIntint n)方法

返回的是 0(包括)至 n(不包括)之间的 int

代码示例:

public class RandomTest {

    public static void main(String[] args) {

        Random random = new Random();

        System.out.println(random.nextInt(10));

        System.out.println(random.nextFloat());

        System.out.println(random.nextDouble());

    }

}

第一次运行结果:

4

0.60541

0.7046691676099207

第二次运行结果:

3

0.055246472

0.47445795351116005

我们可以看到第一次运行结果和第二次运行的结果是不一样的。当我们想要第一次和第二次运行结果一致的话,可以在创建 Random 对象的时候传入一个 Long 类型的数字,这个数字叫随机种子。具有相同随机种子的 Random 对象生成的随机数是一样的

示例:

public static void main(String[] args) {

        // 创建一个Random对象并传入随机种子

        Random random = new Random(10);

        System.out.println(random.nextInt(10));

        System.out.println(random.nextFloat());

        System.out.println(random.nextDouble());

}

第一次运行结果:

3

0.44563425

0.2578027905957804

第二次运行结果:

3

0.44563425

0.2578027905957804

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值