static属性.关联关系.API

 

一、static属性

(一) static的定义

①static被称为静态,可以用来修饰类的属性或者方法;

②如果类的某个属性,不管创建多少个对象,属性的存储空间只有唯一的一个,那么这个属性就应该用static修饰,被static修饰的属性被称为静态属性;

③static属性可以使用对象调用,也可以直接用类名调用;

④静态属性是类的所有对象共享的,即不管创建了多少个对象,静态属性在内存中只有一个;

(二)static属性

public class Employee {

private String name ;(非静态属性)

private double salary; (非静态属性)

private static int count;(静态属性)

;      Static修饰符

二、static方法

(一)static方法定义

如果某个方法不需要与某个特定的对象绑定,那么该方法可以使用static修饰,被static修饰的方法称为静态方法

基本结构

public static void sellticket(){

   System.out.println(“所有火车票都是12306卖的!”)  }

(二)static方法的作用

static方法可以使用对象调用,也可以直接用类名调用,建议用类名直接调用);

public class TicketSeller{

    private static int ticket=11;

    public static void sellticket(){

       ticket=ticket-1;

       System.out.println("卖票的静态方法");

    }

}

public class Test{

public static void main(String[] args) {

   TicketSeller .sellticket();

 }

}

(三)static方法的作用

①如果某个方法与实例无关,也就是说不管哪个对象调用这个方法,都执行相同的操作,与对象没有关系,则应该定义为静态方法。不需要创建对象后再使用该方法;

②例如:API中的Math类,都是静态方法,因为进行数学运算时,与Math对象本身无关,使用类直接调用即可;

三、static总结

①static方法定义

②static方法的作用

③static方法的重要性

④本类的方法之间的调用

1.任何方法都可以直接调用静态方法

2.静态方法不能直接调用非静态方法,需要创建对象,用对象名调用非静态方法

四、static块

(一)static块

①static块和static的属性以及方法的性质是相同的,用static修饰的代码块表示静态代码块,当Java虚拟机加载类时,就会执行该代码块;

②区别在于语法不同;

(二)static语法

直接在代码块前,加上关键字static即成为静态块

static{

System.out.println("123");

System.out.println("123");

System.out.println("123");

(三)static用途

①静态块只有在类加载的时候被执行一次,不管创建多少个对象,都不会再执行;

②如果一个类加载的时候,总要预先做一些事情,则可以放在静态块中,例如,读取一个属性文件,进行一些常规配置,写一些日志等;

③一个类中可以有多个静态块,按照顺序执行;

五、final属性及参数

(一)final定义

①属性:定义就必须直接赋值或者在构造方法中进行赋值,并且后期都不能修改;

②方法:定义必须有实现代码,并且子类里不可被覆盖;

③类:不能被定义为抽象类或是接口,不可被继承;

(二)final修饰属性

①当final修饰属性时,基本数据类型的属性将成为常量,不能被修改;

②一些数学定理中的常量经常使用final修饰;

(三)final修饰参数

在方法参数前面加final关键字,为了防止数据在方法体中被修改;

 

 

 

一、关联关系

(一) 关联关系

①对象和对象之间的连接。在Java中,关联关系的代码表现形式为一个类做为另一个类的属性类型存在;

②即“有”的关系:”has-a”。

(二)关联关系的方向

①关联关系分为单向关联和双向关联;

②单向关联: A类关联B类;

③双向关联:A类关联B类,B类关联A类;

(三)关联关系的多重性

一对一关联:一个学生,只能在一个班级里学习

:

    public class Classes{

       private Student cla;//班级

     }

    public  class Student{

     }

①一对多关联:一个学生,可以参加多个班级学习;

②解决一对多的关联的方案:1.集合2.数组

二、依赖关系

(一)依赖关系的定义

①指一个类A使用到了另一个类B;

(二)依赖关系的特性

①这种关系是具有偶然性的、临时性的、非常弱的,但是类B的变化会影响到类A

(三)依赖具体表现

①在代码层面,依赖关系表现为类B作为参数被类A在某个method;

(四)依赖与关联的区别

①关联是“HAS”关系,依赖是“USE”关系

②A类关联B类,指的是B类对象作为A类的属性存在,称为“has”关系

③A类依赖B类,指的是B的对象作为A类的方法参数存在,称为“use”关系

生命周期不同

①如果A类关联B类,那么创建A类的对象时实例化B类的对象,直到A类对象被销毁,所关联的B类对象也被销毁。即只要A类对象存在,B类对象就存在

②如果A类依赖B类,那么只有当A类对象调用到相应方法时,B类对象才被临时创建,方法执行结束,B类对象即被回收,A类和B类之间的依赖关系是一种瞬时的关系

一、常用API

(一)常用API

①判断一门语言是否强大,其中一个指标就是看已经提供的可用函数库或类库是否丰富;

②javaSE提供了丰富的类库;

③一定要习惯查询API帮助文档;

④常用的包:java.lang/java.util/java.io/java.sql;

二、数学API

(一)Math类

①位于java.lang包中;

②数学类定义了许多数学函数,如sin、cos、exp、abs等。Math类是一个工具类,它在解决与数学有关的一些问题有着非常重要的作用;

③这个类有两个静态属性:E和PI。E代表数学中的e 2.7182818,而PI代表圆周率3.1415926;

④Math类中的方法都是static方法,调用静态方法可以直接使用类名.方法名来调用,不需要先创建类的一个对象;

(二)Math类—方法

①Math.abs 求绝对值;

②Math.sin 正弦函数 Math.asin 反正弦函数;

③Math.cos 余弦函数 Math.acos 反余弦函数;

④Math.tan 正切函数 Math.atan 反正切函数;

⑤Math.toDegrees 弧度转化为角度;

⑥Math.toRadians 角度转化为弧度;

⑦Math.ceil 得到不小于某数的最大整数;

⑧Math.floor 得到不大于某数的最大整数;

三、时间与日期日历

(一)Java中与时间日期相关的API

①Date类:表示特定的瞬间,精确到毫秒;

②DateFormat类(抽象类):抽象类,以与语言无关的方式格式化并分析日期或时间;

③SimpleDateFormat类:与语言环境相关的方式来格式化和分析日期的具体类;

④Calendar类:抽象类,为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法;

(二)Java日期的常见处理

①创建日期

②日期格式化显示

③日期的转换(主要是和字符串之间的相互转换)

④日期中年、月、日、时、分、秒、星期、月份等获取

⑤日期的大小比较、日期的加减

四、大整数对象

(一)BigInteger类

①8种基本数据类型中,long类型所能表示的整数范围是最大的,但还是有限的;

②为了解决这些问题,Java中专门提供了用来进行不限制大小的整数计算的类——java.math.BigInteger;

③该类可以对任意大小的整数进行操作,不过在进行计算的时候是通过方法调用进行的,而不是使用算术运算符;

(二)BigInteger类--构造方法

①BigInteger(byte[] val):使用一个byte数组表示来构造一个大整数;

②BigInteger(int signum, byte[] magnitude):用一个byte数组magnitude来构造大整数,用signum的-1,0,1来表示负,零,正;

③BigInteger(int bitLength, int certainty, Random rnd):构造一个随机产生的,正的,指定长度的,可能是素数的大整数,参数certainty指明要进行多少次素数测试;

④BigInteger(int numBits, Random rnd):构造一个随机产生的大整数,范围在0到2^numBits – 1之间;

(三)BigInteger的方法--四则运算实现

①add(BigInteger val) 返回其值为 (this + val) 的 BigInteger;

②subtract(BigInteger val) 返回其值为 (this - val) 的 BigInteger;

③multiply(BigInteger val) 返回其值为 (this * val) 的 BigInteger;

④divide(BigInteger val) 返回其值为 (this / val) 的 BigInteger;

⑤remainder(BigInteger val) 返回其值为 (this % val) 的 BigInteger;

⑥mod(BigInteger m) 返回其值为 (this mod m) 的 BigInteger;

五、随机处理

(一)Random类

①Random类中实现的随机算法是伪随机,也就是有规则的随机。在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字

②相同种子数的Random对象,相同次数生成的随机数字是完全相同的。也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同。这点在生成多个随机数字时需要特别注意

(二)Random类—构造方法

①public Random():该构造方法使用一个和当前系统时间对应的相对时间有关的数字作为种子数,然后使用这个种子数构造Random对象

②public Random(long seed):该构造方法可以通过制定一个种子数进行创建

(三)Random类—方法

①public boolean nextBoolean():该方法的作用是生成一个随机的boolean值,生成true和false的值几率相等,也就是都是50%的几率;

②public double nextDouble():该方法的作用是生成一个随机的double值,数值介于[0,1.0)之间。

 例如:生成[0,1.0)区间的小数

           double d1 = r.nextDouble();

          直接使用nextDouble方法获得

③public int nextInt():该方法的作用是生成一个随机的int值,该值介于int的区间,也就是-231到231-1之间。如果需要生成指定区间的int值,则需要进行一定的数学变换,具体可以参看下面的使用示例中的代码。

   例如:生成任意整数

                int n1 = r.nextInt();

           直接使用nextInt方法即可;

④public int nextInt(int n):该方法的作用是生成一个随机的int值,该值介于[0,n)的区间,也就是0到n之间的随机int值,包含0而不包含n。如果想生成指定区间的int值,也需要进行一定的数学变换,具体可以参看下面的使用示例中的代码;

⑤public void setSeed(long seed)该方法的作用是重新设置Random对象中的种子数。设置完种子数以后的Random对象和相同种子数使用new关键字创建出的Random对象相同;

(四)与Math类的随机方法比较

①在Math类中也有一个random方法,该random方法的工作是生成一个[0,1.0)区间的随机小数;

②Math类中的random方法就是直接调用Random类中的nextDouble方法实现的;

③random方法的调用比较简单,所以很多程序员都习惯使用Math类的random方法来生成随机数字;

转载于:https://www.cnblogs.com/alone-/p/7647405.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值