构造方法

java的ProcessBuilder类

百般思念 提交于 2020-02-24 04:06:54
java5引入了ProcessBuilder类,该类的功能于Runtime.exec系列方法相同,都是启动一个进程。 主要区别是:ProcessBuilder是可以更好控制启动的进程,且可以重用;但是exec方法没有这种效果; ProcessBuilder是从1.5加进来的,而exec系列方法是从1.0开始就有的,后续版本不断的重载这个方法,到了1.5已经有6个之多。 但是,官方的api没有任何文档说明这个两个区别,我想主要的是OO的思想,导致了这个新类的产生,功能上没什么变化 具体内容可以参见java5的api文档或者java in a nutshell 使用ProcessBuilder的例子 package net.java2000.util; import java.io.BufferedReader; import java.io.File; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Arrays; public class TestProcessBuilder {  public static void main(String args[]) throws Exception {   ProcessBuilder builder = new

PHP之面向对象小结

左心房为你撑大大i 提交于 2020-02-24 00:55:19
PHP 中创建对象 类创建后,我们可以使用 new 运算符来实例化该类的对象: $runoob = new Site; PHP 构造函数 构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。 function __construct( $par1, $par2 ) { $this->url = $par1; $this->title = $par2; } 析构函数 析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。 PHP 5 引入了析构函数的概念,这类似于其它面向对象的语言,其语法格式如下: void __destruct ( void ) 继承 PHP 使用关键字 extends 来继承一个类,PHP 不支持多继承,格式如下: class Child extends Parent { // 代码部分 } 方法重写 如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。 访问控制 PHP 对属性或方法的访问控制,是通过在前面添加关键字 public(公有),protected(受保护)或 private(私有)来实现的。 public(公有)

spring管理bean的三种创建方式

主宰稳场 提交于 2020-02-23 18:04:57
Spring支持如下三种方式创建Bean 1:调用构造器创建Bean 2:调用静态工厂方法创建Bean 3:调用实例工厂方法创建Bean 一:调用构造方法创建Bean 调用构造方法创建Bean是最常用的一种情况Spring容器通过new关键字调用构造器来创建Bean实例,通过class属性指定Bean实例的实现类,也就是说,如果使用构造器创建Bean方法,则<bean/>元素必须指定class属性,其实Spring容器也就是相当于通过实现类new了一个Bean实例。调用构造方法创建Bean实例,通过名字也可以看出,我们需要为该Bean类提供无参数的构造器。下面是一个通过构造方法创建Bean的最简单实例 1:Bean实例实现类 Person.java [java] view plain copy package public class private public Person(String name) ); public void +name); } 因为是通过构造函数创建Bean,因此我们需要提供无参数构造函数,另外我们定义了一个name属性,并提供了setter方法,Spring容器通过该方法为name属性注入参数。 2:配置文件beans.xml [html] view plain copy <? = = ?> < = = ="http://www

JVM学习——字节码(学习过程)

旧街凉风 提交于 2020-02-23 12:23:15
JVM——字节码 为什么要学字节码 字节码文件,有什么用? JVM虚拟机的特点:一处编译,多处运行。 多处运行,靠的是.class 字节码文件。 JVM本身,并不是跨平台的。Java之所以跨平台,是因为JVM本身不夸平台。 二进制的文件,显然不是给人看的。是给机器看的。 从根源了解了之后,返回到语言层次 好多都会豁然开朗。 必须要学,学一个东西,还需要理由吗? Java语言规范补充: JVM虚拟机规范(相对底层的)Java,Groovy,kotlin,Scala。 编译后都是Class文件,所以就都能在JVM虚拟机上运行。 字节码:枯燥且重要 字节码文件解读 一个Java类,然后进行编译成字节码文件 package com.dawa.jvm.bytecode; public class MyTest1 { private int a = 1; public int getA() { return a; } public void setA(int a) { this.a = a; } } javap 编译后的结果: ➜ main javap com.dawa.jvm.bytecode.MyTest1 Compiled from "MyTest1.java" public class com.dawa.jvm.bytecode.MyTest1 { public com.dawa

构造方法提示错误Duplicate modifier for the method XXX in type XXX

别说谁变了你拦得住时间么 提交于 2020-02-22 17:37:24
写代码时非常低级的错错误,当时没仔细看自己写的该方法,结果是该构造方法多写了权限修饰符,现记录如下: private final ExecutionEnvironment env; private final String jobId; private final CalJobParam.JdbcParam dataSink; public public IndicatorParamFunction(ExecutionEnvironment env, String jobId, CalJobParam.JdbcParam dataSink) { this.env = env; this.jobId = jobId; this.dataSink = dataSink; } 多写了public。。。。。。。。。。。。。。0.0 来源: CSDN 作者: 明月大江 链接: https://blog.csdn.net/LiHuiJUNMate/article/details/104445186

Java BigDecimal详解

我只是一个虾纸丫 提交于 2020-02-22 15:05:22
1.引言   float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合。但是,商业计算往往要求结果精确,这时候BigDecimal就派上大用场啦。 先看下面代码 public static void main(String[] args) { System.out.println(0.2 + 0.1); System.out.println(0.3 - 0.1); System.out.println(0.2 * 0.1); System.out.println(0.3 / 0.1); } 运行结果如下  你认为你看错了,但结果却是是这样的。问题在哪里呢?原因在于我们的计算机是二进制的。浮点数没有办法是用二进制进行精确表示。我们的CPU表示浮点数由两个部分组成:指数和尾数,这样的表示方法一般都会失去一定的精确度,有些浮点数运算也会产生一定的误差。如:2.4的二进制表示并非就是精确的2.4。反而最为接近的二进制表示是 2.3999999999999999。浮点数的值实际上是由一个特定的数学公式计算得到的。   其实java的float只能用来进行科学计算或工程计算,在大多数的商业计算中,一般采用java.math

StringBuilder

不羁的心 提交于 2020-02-22 12:13:56
StringBuilder定义和作用 StringBuilder的作用:节省字符串拼接所制造的内存和占用的时间 每一次字符串拼接堆区中的常量区都会开辟一块新的地址和内存 StringBuilder是一个可变的字符串类,我们可以把它看作是一个容器,这里的可变指的是StringBuiler对象中的内容是可变的,它在进行拼接的时候是不会创建一个新的对象的。而String中的内容是不可变的。 StringBuilder的构造方法 public StringBuilder() 无参构造方法,可创建空白字符串对象 public StringBuilder(String str) 带参构造方法,根据字符串内容,创建可变字符串对象 StringBuilder stb = new StringBuilder() 这个是创建对象的格式(创建对象的统一格式) StringBuilder的添加和反转方法 通过append方法进行添加 StringBuilder stb = new StringBuilder(); sbb.append("sapere"); sbb.append("Aude"); //输出这个字符串的结果为 spaere Aude //如果采用链式编程: sbb.append("sapere"). sbb.append.("Aude") //输出结果一样 /

Java基础(二)

爷,独闯天下 提交于 2020-02-22 08:28:00
静态方法调用非静态成员的非法性理解 静态方法在类没有实例化的时候就已经被分配内存真正存在的了;而非静态方法这时候在内存上是没有存在的,所以静态方法这时候调用非静态成员是根本调用不到的,称为非法。 Java中定义一个不做事且没有参数的构造方法的用处 java程序在执行子类的构造方法之前,如果没有用super()来调用父类的特定构造方法,则会默认调用父类没有参数的构造方法,这时候,父类只是定义了有参数的构造方法的话,就会报错,因为找不到没有参数的构造方法,解决方法就是在父类上定义一个不做事且没有参数的构造方法。 接口和抽象类的区别 (1) 接口方法默认是public且不可实现,而抽象类可以有非抽象方法 (2) 接口中除了static,final变量,不能有其他变量;而抽象类中不一定 (3) 一个类可以实现多个接口,但只能实现一个抽象类;接口本身可以通过extends拓展多个接口 (4) 接口方法默认修饰符public,抽象方法原本就是为了被重写,所以不能使用private (5) 从设计层面来看,抽象类是对类的抽象,是一种模板设计;接口是对行为的抽象。是一种行为的规范。 成员变量和局部变量区别 (1) 成员变量属于类,可以被public,private,static修饰;而局部变量属于方法,不能被访问限制符及static修饰 (2) 从内存的存储方式来看,若成员变量用static修饰

java反射详解

夙愿已清 提交于 2020-02-22 07:26:27
一.概念   反射就是把Java的各种成分映射成相应的Java类。   Class类的构造方法是private,由JVM创建。   反射是java语言的一个特性,它允程序在运行时(注意不是编译的时候)来进行自我检查并且对内部的成员进行操作。例如它允许一个java的类获取他所有的成员变量和方法并且显示出来。Java 的这一能力在实际应用中也许用得不是很多,但是在其它的程序设计语言中根本就不存在这一特性。例如,Pascal、C 或者 C++ 中就没有办法在程序中获得函数定义相关的信息。 (来自Sun) 二、Java反射机制提供如下功能: 在运行时判断任意一个对象所属的类 在运行时构造任意一个类的对象 在运行时判段任意一个类所具有的成员变量和方法 在运行时调用任一个对象的方法 在运行时创建新类对象 在使用Java的反射功能时,基本首先都要获取类的Class对象,再通过Class对象获取其他的对象 1、获取类的Class对象 Class 类的实例表示正在运行的 Java 应用程序中的类和接口。获取类的Class对象有多种方式: 调用getClass Boolean var1 = true; Class<?> classType2 = var1.getClass(); System.out.println(classType2); 输出:class java.lang.Boolean 运用

Java 之 InputStreamReader 类

对着背影说爱祢 提交于 2020-02-22 03:50:13
InputStreamReader 类   1、概述      转换流 java.io.InputStreamReader ,是 Reader 的子类,是从字节流到字符流的桥梁。      该类 读取字节,并使用指定的字符集将其解码为字符。它的字符集可以由名称指定,也可以接受平台的默认字符集。   2、继承自父类的共性成员方法     该类继承于 Reader 类,继承了父类的共性成员方法: int read() 读取单个字符并返回。 int read(char[] cbuf)一次读取多个字符,将字符读入数组。 void close() 关闭该流并释放与之关联的所有资源。   3、构造方法 InputStreamReader(InputStream in) 创建一个使用默认字符集的 InputStreamReader。 InputStreamReader(InputStream in, String charsetName) 创建使用指定字符集的 InputStreamReader。      参数:      InputStream in:字节输入流,用来读取文件中保存的字节      String charsetName:指定的编码表名称,不区分大小写,可以是utf-8/UTF-8,gbk/GBK,...不指定默认使用UTF-8   4、使用步骤       ①