构造方法

Java BigInteger 类

依然范特西╮ 提交于 2020-03-02 11:12:36
目录 BigInteger 1. 构造方法 2. 成员方法 3. Java 实例 BigInteger java.math.BigInteger 类,不可变的任意精度的整数。如果运算中,数据的范围超过了 long 类型后,可以使用 BigInteger 类实现,该类的计算整数是不限制长度的; 详见: Class BigInteger ,注意不是继承 Math 类,而是继承自 Number; 1. 构造方法 BigInteger(String value) 将 BigInteger 的十进制字符串表示形式转换为 BigInteger,超过 long 类型的范围,已经不能称为数字了,因此构造方法中采用字符串的形式来表示超大整数,将超大整数封装成 BigInteger 对象; 2. 成员方法 BigInteger 类提供了对很大的整数进行加、减、乘、除的方法,注意:都是与另一个 BigInteger 对象进行运算; 方法声明 描述 add(BigInteger value) 返回其值为 (this + val) 的 BigInteger,超大整数加法运算 subtract(BigInteger value) 返回其值为 (this - val) 的 BigInteger,超大整数减法运算 multiply(BigInteger value) 返回其值为 (this * val) 的

Java关键字this、super使用总结

依然范特西╮ 提交于 2020-03-02 05:46:28
一、this 关键字 Java关键字this只能用于成员方法体内,它是一个系统隐含的指针且被自动附加在非静态的成员方法参数列表中。当一个对象被创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是this。 当前时刻,哪个对象调用该函数,那么this就指向当前调用该函数的对象(this也可以理解为当前(上下文)对象),系统会自动在该函数的参数列表中添加一个 隐藏的 this指针,并且把调用该函数的对象的地址值赋给this指针,这样一来,在函数的内部通过this就可以 访问 当前正在调用该函数的 对象的成员 (包括成员变量、成员方法)。 因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this(指针),这在“Java关键字static、final使用总结” 一文中给出了明确解释。 并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this。 下面给出一个使用this的综合实例,以便说明问题: package org.leizhimin; public class Test6 { private intnumber; private String username; private Stringpassword; private intx = 100; public Test6(int n) {

spring依赖注入的四种方式

爱⌒轻易说出口 提交于 2020-03-02 03:09:30
平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类 实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该 对象的类中。依赖注入的另一种说法是“控制反转”,通俗的理解是:平常我们new一个实例,这个实例的控制权是我们程序员,而控制反转是指new实例工作 不由我们程序员来做而是交给spring容器来做。 spring有多种依赖注入的形式,下面仅介绍spring通过xml进行IOC配置的方式: Set注入 这是最简单的注入方式,假设有一个SpringAction,类中需要实例化一个SpringDao对象,那么就可以定义一个private的SpringDao成员变量,然后创建SpringDao的set方法(这是ioc的注入入口): Java代码 package com.bless.springdemo.action; public class SpringAction { //注入对象springDao private SpringDao springDao; //一定要写被注入对象的set方法 public void setSpringDao(SpringDao springDao) { this

Java基础之继承

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-01 20:24:34
一、继承的特点: Java只支持单继承,不支持多继承,即一个类只能有一个父类,不可以有多个父类 class A { } class B { } class C extends A,B { } //这种写法错误 Java支持多层继承 例如: class A { } class B extends A { } class C extends B { } 二、继承中成员变量的特点: 子类只能获取父类的非私有成员 子父类中成员变量的名字若不一样,则直接获取父类的成员变量 子父类中成员变量名字若一样,则获取的是子类中的成员变量 super: 可以获取父类的成员变量和成员方法,用法和this是相同的 就近原则: 如果有局部变量就使用局部变量 如果没有局部变量,有子类的成员变量就使用子类的成员变量 如果没有局部变量和子类的成员变量,有父类的成员变量就用父类的成员变量 三、继承中成员方法的特点 方法的重写: 在子父类中,子类的方法和父类的方法完全一样,子类重写了父类的方法(即覆盖),当子类重写了父类的方法之后,使用子类对象调用的就是子类的方法。 方法的重载: 在一个类中,有多个重名的方法,但是其中参数不一样(参数的个数,参数的类型,参数的顺序),和返回值无关。 四、继承中构造方法的执行顺序 在有子父类继承关系的类中,创建子类的对象,调用的是子类的构造方法

Java编程的逻辑 (84) - 反射

青春壹個敷衍的年華 提交于 2020-03-01 19:13:02
上节介绍完了并发,从本节开始,我们来探讨Java中的一些动态特性,包括反射、类加载器、注解和动态代理等。利用这些特性,可以以优雅的方式实现一些灵活和通用的功能,经常用于各种框架、库和系统程序中,比如: 在63节介绍的实用序列化库Jackson,利用反射和注解实现了通用的序列化/反序列化机制 有多种库如Spring MVC, Jersey用于处理Web请求,利用反射和注解,能方便的将用户的请求参数和内容转换为Java对象,将Java对象转变为响应内容 有多种库如Spring, Guice利用这些特性实现了对象管理容器,方便程序员管理对象的生命周期以及其中复杂的依赖关系 应用服务器比如Tomcat利用类加载器实现不同应用之间的隔离、JSP技术也利用类加载器实现修改代码不用重启就能生效的特性 面向方面的编程(AOP - Aspect Oriented Programming)将编程中通用的关注点比如日志记录、安全检查等与业务的主体逻辑相分离,减少冗余代码,提高程序的可维护性,AOP需要依赖上面的这些特性来实现 本节先来看反射机制。 在一般操作数据的时候,我们都是知道并且依赖于数据的类型的,比如: 根据类型使用new创建对象 根据类型定义变量,类型可能是基本类型、类、接口或数组 将特定类型的对象传递给方法 根据类型访问对象的属性,调用对象的方法 编译器也是根据类型,进行代码的检查编译。

Java四种权限修饰符

痴心易碎 提交于 2020-03-01 17:11:56
首先,这四种修饰符按权限大小依次为 public. protected. default. private public (公有的) 1 . 可以修饰类,成员变量,成员方法,构造方法。 2 . 被public 修饰,可以在其他类,其他包中使用。 3 . 顶级类只能被public(公有) 和default(默认)修饰(这个文末有解释)。 protected (受保护) 1 .可以修饰成员变量,成员方法,构造方法。 2 . 不能修饰最外部的类。 3 . 被protected修饰后,只能被同包下的其他类访问;如果在不同包下的类要访问被protected修饰的成员,这个类必须是其子类。 default (默认的) 1 . 可以修饰类,成员变量,成员方法,构造方法 2 . dafault是在接口中使用,目的是为了解决接口的修改与现有的实现不兼容的问题,当用default修饰两个接口,然后用一个类去实现时就会出现报错。当实现其中的一个接口,在实现类中重写了该方法,以实现类的为准。 private (私有的) 1 . 可以修饰成员变量,成员方法,构造方法。 2 . 不能修饰外部类,如果修饰内部类,该类只能在该外部类中使用。 3 . 被private修饰的成员变量,只能在本类中使用,在其他类中无法使用,但是可以通过get和set方法进行访问和修改。 为什么顶级类(外部类)只能用public

创建对象时,new和Class.newInstance() 以及Constructor.newInstance()区别,以及getDeclaredMethods和getMethods的区别

孤街醉人 提交于 2020-03-01 12:00:28
一、newInstance和new 用newInstance与用new是区别的,区别在于创建对象的方式不一样,前者是使用类加载机制。在使用newInstance()方法的时候,必须保证这个类已经加载并且已经连接了,而这可以通过Class的静态方法forName()来完成的。newInstance()在工厂模式里面用到。 Class.newInstance()的使用: Class.forName("A").newInstance(); 或者 A.class.newInstance(); 区别: (1)调用构造方法不同 new关键字能调用任何构造方法。 newInstance()只能调用无参构造方法。 (2)效率不一样 new关键字是强类型的,效率相对较高。 newInstance()是弱类型的,效率相对较低。 二、Class.newInstance()和Constructor.newInstance() 相同点:Class.newInstance()和Constructor.newInstance()都是通过反射来获取类的对象的。 不同点: (1)调用构造函数不同 Class.newInstance() 只能够调用 无参 的构造函数,即默认的构造函数; Constructor.newInstance() 可以根据传入的参数,调用 任意 构造构造函数。 (2)调用构造函数是否私有不同

JavaBasic:继承

强颜欢笑 提交于 2020-03-01 08:53:35
继承是Java面向对象编程当中一种代码复用的方法 Java只允许单继承 proteced关键字把访问权限控制在子类与父类之间 若父类的构造方法没有参数,子类可以默认调用;若父类的构造方法有参数,子类必须显示用super()调用父类的构造方法 可以安全地向上转型为更为抽象的类型 向下转型时最好用instanceof先判断 public class Person { protected String name ; protected int age ; protected String gender ; public Person ( String name ) { this . name = name ; } public int getAge ( ) { return age ; } public void setAge ( int age ) { this . age = age ; } public void run ( ) { System . out . println ( name + " is running" ) ; } } public class Student extends Person { private int score ; public Student ( String name ) { /** * 必须显示地调用父类的构造方法 */ super (

Spring中构造方法赋值方式

谁都会走 提交于 2020-03-01 08:37:48
1.context:component-scan作用 <context:component-scan base-package="com.jd"></context:component-scan> 扫描com.jd包及其子包下的所有类,并为添加了@Controller,@Service,@Component和@Repository修饰的类创建对象并存入IoC容器中。 2.Spring中构造方法赋值方式 public class UserInfo{ public UserInfo(int age,String name) { System.out.println(age+","+name); } public UserInfo(Date birth) { System.out.println(birth); } public UserInfo(String[] mobiles) { for(String mobile : mobiles) { System.out.println(mobile); } } public UserInfo(List<Integer> ages) { for(Integer age : ages) { System.out.println(age); } } public UserInfo(Set<Date> birthdays) { for(Date

动手动脑三

喜夏-厌秋 提交于 2020-03-01 07:40:54
一、以下代码为何无法编译 public class Test{ public static void main(String[] args){ Foo obj1=new Foo(); } } class Foo{ int value; public Foo(int initVaule){ vaule=initVaule; } } 原因:下面自己写的构造方法带有1个参数,但是在新建对象的时候却没有参数,所以无法进行初始化。 如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法。同一个类可以有多个构造函数,多个构造函数之间通过参数来区分,这是方法重载的一个实例。构造函数之间可以相互调用 二、 ava进行初始化的地方有两个:初始化块和构造函数,其中初始化块又分为静态初始化块和实例初始化块。静态初始化块是类中由static修饰的初始化块,实例初始化块为类中没有任何关键字修饰的初始化语句。 如果在主函数中创建对象时没有形参时,如果在类中定义了公共的变量并给与了赋值,那么就会把值赋给主函数中的变量,再调用类中的默认构造函数,如果在主函数中创建对象时有形参,则调用类中对应的构造函数。 三、 静态初始化块只执行一次。 创建子类型的对象时,也会导致父类型的静态初始化块的执行。 来源: https://www.cnblogs.com/love-nan/p/9826115.html