精华内容
下载资源
问答
  • //数据库返回一个结果集,现在假设select的是数据库中没有的数据,那么结果集为空while (rs.next()){String str = rs.getString("Name");//此时str应该是null?int id = rs.getInt("Id"); //id为0?A a= new A(id,...

    ResultSet rs= pstmt.executeQuery();//数据库返回一个结果集,现在假设select的是

    数据库中没有的数据,那么结果集为空

    while (rs.next())

    {

    String str = rs.getString("Name");//此时str应该是null?

    int id = rs.getInt("Id");     //id为0?

    A a= new A(id,str);  //调用构造函数(定义见第二段代码),那a是什么?是

    null?此构造器还会被调用吗?a这个对象会生成吗?

    public final class A   //这个是A类的定义,成员变量和构造函数

    {

    private int id;

    private String name;

    public A(int Id,String Word)

    {

    this.id = Id;

    this.name = Word;

    }

    }

    我现在项目中要通过a这个对象来判断数据库返回的是否为空集,请问该如何判断?由此引出了上述问题(具体问题可以看代码段的注释)

    展开全文
  • 构造函数

    2021-01-26 20:53:18
    构造函数主要是用来创建对象时为对象赋初值来初始化对象。总与new运算符一起使用在创建对象的语句中 。A a=new A();构造函数具有和类一样的名称;但它是一个函数具有函数的所有特性,同一个类里面可以有多个参数不同...

    构造函数主要是用来创建对象时为对象赋初值来初始化对象。总与new运算符一起使用在创建对象的语句中 。A a=new A();

    构造函数具有和类一样的名称;但它是一个函数具有函数的所有特性,同一个类里面可以有多个参数不同的构造函数,也就是函数的多态。

    构造函数是在实例化类时最先执行的方法,通过这个特性可以给对象赋初值。

    构造函数没有返回值,也不能用void修饰,只有访问修饰符。

    每个类中都会一个构造函数,如果用户定义的类中没有显式的定义任何构造函数,编译器就会自动为该类型生成默认构造函数,类里面没有构造函数也可以,系统会为你自动创建无参构造函数。

    例:class test //test类

    {

    public test()

    {

    //构造函数,初始化对象

    }

    }

    构造函数,目的是用于初始化类。比如你定义了一个类A

    class A

    那么构造函数写法就是

    public A()  //括号内可以有参数

    {

    //用于初始化的语句(没有参数就叫做默认构造函数)

    }

    //注意:一个类可以有多个构造函数,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。

    每次要用类A时,比如 A a = new A(); //如果前面定义的构造函数有参数,那这里必须传参

    构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用;而一般的方法是在程序执行到它的时候被调用的;每次实例化(既上面的new A())一个类时,就会调用构造函数。

    虽然在一般情况下,构造函数不被显式调用,而是在创建对象时自动被调用。但是并不是不能被显示调用。有些时候是一定要显示调用的,只要是父类有带参的构造函数,在子类中就必须显示的调用父类的构造函数,因为子类的构造器在实例化时无法找到父类的构造函数(当父类有自己写的无参构造函数时,子类也不用显示调用)。

    构造函数的重载:所谓重载,就是参数列表不同的几个同名方法,构造函数的重载其实和方法的重载没什么太大的区别,无非访问修饰符为public ,没用返回值类型。下面写一个小例子:

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    1 class Animal

    2 {

    3 static void Main(string[] args)

    4 {

    5 //方法一

    6 Animal animal1 = new Animal();

    7 animal1.Name = "兔子";

    8 animal1.Color = "白色";

    9 animal1.Speed = 20;

    10 animal1.Run();

    11 //方法二

    12 Animal animal2 = new Animal("兔子", "黑色");

    13 animal2.Run(30);

    14 //方法三

    15 Animal animal3 = new Animal("狗", "棕色", 50);

    16 animal3.Run();

    17 Console.WriteLine();

    18 }

    19 //构造函数重载

    20 public Animal()

    21 {

    22 }

    23 public Animal(string name, string color)

    24 {

    25 this.name = name;

    26 this.color = color;

    27 }

    28 public Animal(string name, string color, int speed)

    29 {

    30

    31 this.name = name;

    32

    33 this.color = color;

    34

    35 this.speed = speed;

    36 }

    37 //名称

    38 private string name;

    39 public string Name

    40 {

    41 get { return name; }

    42 set { name = value; }

    43 }

    44 //颜色

    45 private string color;

    46 public string Color

    47 {

    48 get { return color; }

    49 set { color = value; }

    50 }

    51 //速度

    52 private int speed;

    53 public int Speed

    54 {

    55 get { return speed; }

    56 set { speed = value; }

    57 }

    58 //方法的重载Run方法的不同实现

    59 public void Run()

    60 {

    61 Console.WriteLine("一只" + this.color + "的" + this.name + "正在以" + this.speed + "Km/h的速度在奔跑\n");

    62

    63 }

    64 public void Run(int speed)

    65 {

    66

    67 Console.WriteLine("一只" + this.color + "的" + this.name + "正在以" + speed + "km/h的速度在奔跑\n");

    68

    69 }

    70

    71 }

    48304ba5e6f9fe08f3fa1abda7d326ab.png

    结果如下图所示:Run方法的两种重载实现是一样的。

    3b92af5a2a352cea8147f26424347f9e.png

    展开全文
  • 本文主要是为新手、对java语言感兴趣的人和那些没有系统学习过java基础知识的人进行一个总结,在文章中对构造函数进行了较为详细的说明和讨论,也包含了我个人对于java面向对象中构造函数的一些看法。希望走在java...

    本文主要是为新手、对java语言感兴趣的人和那些没有系统学习过java基础知识的人进行一个总结,在文章中对构造函数进行了较为详细的说明和讨论,也包含了我个人对于java面向对象中构造函数的一些看法。希望走在java学习道路上的同行者可以有一个较为清晰的认知和理解。当然仅为个人观点,水平有限,不足之处,还请大家多多指出,互相交流学习。

    1.构造函数的概念

    很多java新手谈到构造函数就会犯晕,我们先来看看什么是构造函数。

    首先,构造函数是函数的一种特殊形式,特殊在哪里?构造函数中不需要定义返回类型(void是无需返回值的意思,请注意区分两者),且构造函数的名称与所在的类名完全一致,其余的与函数的特性相同,可以带有参数列表,可以存在函数的重载现象。

    2.构造函数的格式

    了解了构造函数的基本概念,现在来写一个构造函数,希望大家可以了解、记忆其格式,通过实例发现其与普通函数的不同之处。

    public class Demo{

    private int num=0;

    //无参构造函数

    Demo()

    {

    System.out.println("constractor_run");

    }

    //有参构造函数

    Demo(int num)

    {

    System.out.println("constractor_args_run");

    }

    //普通成员函数

    public void demoFunction()

    {

    System.out.println("function_run");

    }

    }

    在这里要说明一点,如果在类中我们不声明构造函数,JVM会帮我们默认生成一个空参数的构造函数;如果在类中我们声明了带参数列表的构造函数,JVM就不会帮我们默认生成一个空参数的构造函数,我们想要使用空参数的构造函数就必须自己去显式的声明一个空参的构造函数。

    3.构造函数的作用

    通过开头的介绍,构造函数的轮廓已经渐渐清晰,那么为什么会有构造函数呢?构造函数有什么作用?构造函数是面向对象编程思想所需求的,它的主要作用有以下两个:

    1) 创建对象。任何一个对象创建时,都需要初始化才能使用,所以任何类想要创建实例对象就必须具有构造函数。

    2) 对象初始化。构造函数可以对对象进行初始化,并且是给与之格式(参数列表)相符合的对象初始化,是具有一定针对性的初始化函数。

    4.构造函数与普通函数的区别

    下面来详细的分析下构造函数与普通函数的区别,通过两者的一个对比,希望可以加深对构造函数的概念的理解。

    1) 格式不同:

    构造函数不存在返回类型,函数名与所在类的类名一致;

    普通函数有返回类型,函数名可以根据需求进行命名。

    2)调用时期不同

    构造函数在类的对象创建时就运行;

    普通函数在对象调用时才会执行。

    3)执行次数不同

    一个对象创建后,其构造函数只执行一次,就是创建时执行;

    一个对象创建后,其普通函数可以执行多次,取决于对象的调用次数。

    换一种说法来理解。

    (1).一般函数是用于定义对象应该具备的功能。而构造函数定义的是,对象在调用功能之前,在建立时,应该具备的一些内容。也就是对象的初始化内容。

    (2).构造函数是在对象建立时由jvm调用,给对象初始化。一般函数是对象建立后,当对象调用该功能时才会执行。

    (3).普通函数可以使用对象多次调用,构造函数就在创建对象时调用。

    (4).构造函数的函数名要与类名一样,而普通的函数只要符合标识符的命名规则即可。

    (5).构造函数没有返回值类型。

    5.构造函数的使用场景

    分析了那么多构造函数的信息,那么什么时候使用构造函数呢?既然构造函数是对新对象进行初始化,那么当开发中分析事物的时候,发现事物一出现就具备了某些特征时,就可以将其定义在构造函数中,这样方便快捷,也符合面向对象的编程思想。

    6.构造函数在继承中的特点

    在继承中,子类创建的对象可以调用父类的公共方法和属性,那么子类会不会调用父类的构造函数呢?子类的构造函数与父类的构造函数有什么关系?子类的构造函数需要注意些什么问题呢?下面来解答这三个问题。

    1) 子类会不会调用父类的函数?

    子类继承父类,子类对象初始化时父类的构造函数也会执行,因为子类需要使用父类中的属性,子类需要知道是如何初始化的,所以子类初始化必然会调用父类的构造函数(除非父类没有属性,那么这个类的描述也太差了点,或者没有必要去创建这个类了)。

    2) 子类的构造函数与父类的构造函数有什么关系?

    子类的构造函数中默认的第一行有一条隐式语句super(),该语句会访问父类中的空参数构造函数,除非父类中没有空参数的构造函数,那么子类构造函数的第一行必须显式调用父类的构造函数,即super(int x,…) 。

    3) 子类的构造函数需要注意些什么问题呢?

    子类的构造函数中,super()语句代表调用了父类的构造函数;this()语句代表调用了子类自身的构造函数。需要注意的是,如果这两条语句显式写出来必须放在构造方法的第一行,而且这两条语句不能共存,一个构造函数中的第一行要么是this()要么是super()。

    为什么在第一行?因为需要首先进行初始化。

    为什么不能共存?因为this()代表的本类的其他构造函数,也会去调用super(),出现了this()就没有必要再出现super()了,重复调用没有意义。换言之,子类中至少有一个构造函数的开头为super(),当然可以隐式存在;也就是说至少有一个构造函数的开头不是this()。

    7.构造函数的扩展

    以上的六条已经讲构造函数的概念、特点、使用等问题介绍的比较清楚,下面来介绍几点与构造函数相关的扩展性的小知识。

    1) 所有的类都有构造函数么?构造函数可以被私有化么?

    既然构造函数用于创建对象并且初始化对象,那么当一个类不需要创建对象时,就不需要定义构造函数,但是在java中,所有的类都拥有构造函数,只是有些类的构造函数对开发人员来说是隐藏不可见的,这一点与我们的预期并不相同,不过换个角度这也很好理解,因为java是面向对象的,我们创建类的目的就是为了创建对象或者创建其子类对象,所以没有构造函数的类(无法创建对象的类)并没有什么意义。

    而对于第二个问题,一个类不想要外界创建其对象时,就可以将其构造函数私有化,本类中提供返回对象的方法,并且多数情况下提供的对象是唯一的,单例设计模式就是一个很好的例子,而当我们开发中需要保证对象唯一性的时候,往往就采取这种做法。

    2) 构造代码块与构造函数有什么相似和不同?

    构造代码块用一对“{}”表示,代码块位置没有具体的要求,但必须与类的成员同等级别,在括号的区域内,可以对所有该类的对象进行初始化,也就是说该类对象创建时都会执行到该代码块,并且其优先于构造函数执行。构造函数如前面提到的是具有针对性的,而构造代码块是作用于所有本类对象的。

    构造函数要注意的细节:

    (1).当类中没有定义构造函数时,系统会指定给该类加上一个空参数的构造函数。这个是类中默认的构造函数。当类中如果自定义了构造函数,这时默认的构造函数就没有了。

    备注:可以通过javap命令验证。

    (2).在一个类中可以定义多个构造函数,以进行不同的初始化。多个构造函数存在于类中,是以重载的形式体现的。因为构造函数的名称都相同。

    总结

    以上就是本文关于Java编程中的构造函数详细介绍的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:

    有什么问题可以随时留言指出,小编会及时更改,感谢大家。

    展开全文
  • 很多时候,我们在后台需要频繁的操作数据库,这种情况下就需要连接数据库。我用的是php+mysql数据库来进行开发的。所以下面的栗子也就只是针对php+mysql的情况而定...这样做其实没有什么错,但这样做会无缘无故的产...

    很多时候,我们在后台需要频繁的操作数据库,这种情况下就需要连接数据库。我用的是php+mysql数据库来进行开发的。所以下面的栗子也就只是针对php+mysql的情况而定,其他的连接方式我就不讨论了,个人能力有限哈~~

    我在刚开学习php连接mysql数据库时,都是自己声明一个$con对象,然后通过该对象来创建和数据库的连接,最好关闭连接的时候回收该对象,这样做其实没有什么错,但这样做会无缘无故的产生许多声明的$con对象与关闭$con对象的代码,对于一个合格的、优秀的程序员来说,代码的精简才会让人看的赏心悦目,是吧

    前天我在公交上看有关php的构造函数与析构函数,构造函数就是在创建对象的时候,会自动调用的函数,也就是使用new这个关键字来实例化对象的时候自动调用构造方法;而析构函数则是在销毁一个类之前执行的一些操作或完成的一些功能,这两个函数有点像一个汉堡包的上下层,咱们的对象就在中间的那一块。

    讲解玩构造函数和析构函数,接下来就进入我们的正题把。其实我们完全可以利用php的构造函数与析构函数给数据库类各个查询方法的注入$con对象,同时自动在每次查询之后自动回收$con对象。这确实是一个以逸待劳的好方法,希望能给大家一点启示。

    下面咱们就来举个栗子来说明下这个方法是怎么用的把

    首先,我们编写一个model.php如下,先声明一个私有的类成员$con作为这个类的全局变量。可以把建立数据库连接的代码放在testtable这个数据库查询类的构造函数__construct()里面,把关闭数据库连接的代码放在析构函数__destruct()里面,其中__construct()与__destruct()是php中的函数名保留关键字,也就是一旦声明这两个函数,就被认为是构造函数与析构函数。

    值得注意的是,为声明的私有类成员$con赋值,必须用$this->con的形式。不可以直接$con=xx,如果是$con=xx,php认为这个变量的作用范围仅在当前函数内,不能作用于整个类。这个跟变量的权限有关系,不太清楚这块的同学可以去查看下变量的访问权限这块的内容。

    构造函数,要求一个变量$databaseName,此乃调用者需要查询的数据库名。

    class testtable{

    private $con; //该变量是私有变量,打个不太恰当的比方,就是你女朋友只能是你的女朋友,不可能是别人的女朋友是吧,不然就坏了

    function __construct($databaseName){

    $this->con=mysql_connect("localhost","root","root");  //连接数据库信息

    if(!$this->con){

    die("连接失败!");

    }

    mysql_select_db($databaseName,$this->con);

    mysql_query("set names utf8;");

    }

    public function getAll(){

    $result=mysql_query("select * from testtable order by date desc;");

    $testtableList=array();

    for($i=0;$row=mysql_fetch_array($result);$i++){

    $testtableList[$i]['id']=$row['id'];

    $testtableList[$i]['username']=$row['username'];

    $testtableList[$i]['number']=$row['number'];

    $testtableList[$i]['date']=$row['date'];

    }

    return $testtableList;

    }

    function __destruct(){

    mysql_close($this->con);  //关闭数据库连接

    }

    }

    ?>

    做完之后,getAll()这个数据库查询类的查询方法,无须声明数据库连接与关闭数据库连接,直接就可以进行查询,查询完有析构函数进行回收。在controller.php中先引入这个testtable查询类,再进行getAll()方法的调用,则得到如上图的效果:

    header("Content-type: text/html; charset=utf-8");

    include_once("model.php");  //引入testtable查询类

    $testtable=new testtable("test");

    $testtableList=$testtable->getAll();

    echo "

    for($i=0;$i

    echo

    "

    ".$testtableList[$i]['id']."".$testtableList[$i]['username']."".$testtableList[$i]['number']."".$testtableList[$i]['date']."";

    }

    echo "

    ";

    ?>

    到这里,咱们的工作就完成了,是不是没有想象中的那么复杂哈,其实这个方法完全可以放在公共模块中,只要哪里需要用到数据库查询操作的,都可以直接调用该方法,其实这个类写的还不太全面,它只能做查询操作,有兴趣的小伙伴可以对上面的类进行下变更,让他能同时进行CURD的各种操作。

    以上就是本人的笔记,希望能对有的小伙伴起到帮助,同时希望大家能积极做出评论,我会很认真的为大家解答的!

    展开全文
  • 构造函数-prototype

    2021-03-03 21:10:04
    functionStart(uname, age) {this.uname =uname;this.age =age;this.sayhai = function() {console.log('hi');}}var zjl = new Start('zjl', '41');...以上的构造函数中,new了zjl和reol两个对象,存...
  • php中的结构函数正在PHP里,假如你不手写结构函数,则php正在实例化这个工具的时分,会主动为类成员和类办法进行初始化,调配内存等工作,然而有些时分不克不及餍足咱们的要求,比方咱们要正在工具实例化的时分通报...
  • 使用PDO构造函数连接数据库及DSN详解pdo是php5中新加入的...PDO的概特点以及安装PDO的方法》中,我们介绍了什么是PDO,介绍了PDO的特点以及安装,那么我们这篇文章介绍PDO构造函数连接数据库以及DSN详情!PDO构造...
  • 类转换异常我用这个构造函数来创建一个数据库,当一个按钮被点击这将调用构造函数,当我运行它显示java.lang.ClasscastException错误我的类型转换onClickListener是正确与否请人建议当按钮点击我称为构造函数显示在...
  • 构造数据库必须遵循一定的规则, 这种规则就是范式 目前关系数据库有6种范式, 一般情况下, 只满足第三范式即可 第一范式:原子性 第一范式是数据库的基本要求, 不满足这一点就不是关系数据库 数据表的每一列都...
  • 如何在Java中使用构造函数与普通函数发布时间:2021-01-04 15:05:26来源:亿速云阅读:58作者:Leah如何在Java中使用构造函数与普通函数?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想...
  • 上次在《【php】利用原生态的JavaScript Ajax为php进行MVC分层设计,兼容IE6》(点击打开链接) 一文中,对于php查询Mysql数据库的model.php写法还不够完善,在每一个方法中还需要自己声明mysql的$con对象,同时自己...
  • 作者:Eric Fu链接:https://ericfu.me/sql-window-function/窗口函数(Window Function) 是 SQL2003 标准中定义的一项新特性...
  • promise构造函数

    2021-10-08 12:48:34
    promise从语法上来说是一个构造函数,从功能上来说,promise对象用来封装一个异步操作并可以获取其成功/失败的结果值。 异步编程有哪些? filesystem操作,数据库操作,ajax请求,定时器。 promise的优点: 1....
  • PHP构造函数的重载

    2021-03-25 10:27:43
    由于PHP是弱类型语言,因此函数的输入...因此基于这2点,注定了PHP中无法重载函数,(类似Javascript语言),也无法有构造函数的重载。由于实现函数的重载对提高开发效率很有帮助,如果能象C#或者C++那样,那就非常...
  • php-在类的构造函数中返回值到目前为止,我有一个带有构造函数的29447791671682017201728类public function __construct ($identifier = NULL){// Return me.if ( $identifier != NULL ){$this->emailAddress = $...
  • Java 构造函数Java中的私有构造函数和单例类我们首先分析下面的问题:我们可以有私人构造函数吗?正如你可以很容易猜到的,就像我们可以为构造函数提供访问说明符一样。如果它是私人的,那么它只能在课堂内进行访问...
  • 使用function创建MATLAB类时报错:CLASS 函数必须从类构造函数内调用。 一个可能的原因是因为MATLAB里创建的类.m文件需要放入一个文件夹里,文件夹名称需要和类名一致,并且需要在前面添加'@'符号,这样MATLAB就可以...
  • 匹配[java.math.BigDecimal,java.sql.Timestamp,oracle.jdbc.OracleClob] 但是,如果我从Myclass中删除构造函数,那么根本没有问题.我想有构造函数,我该如何修复它? 我尝试在mapper中添加@Results注释,但是没有任何...
  • 我正在尝试使用默认值mysqli constructor连接到数据库,该默认值记录为:> host = ini_get(“ mysqli.default_host”)>用户名= ini_get(“ mysqli.default_user”)> passwd = ini_get(“ mysqli.default_pw...
  • //自定义redis封装单例模式class RedisDevice{private $con; //连结句柄//需要作为参数传入的参数全部定义成静态方法,因为单例是静态方法private static $host = "127.0.0.1"; //地址private static ... //数据库端...
  • 单例类的构造函数是私有的 单例模式(单例类): 即该类只有一个实例化对象,不管外部声明调用多少次,其本质也都是访问同一块内存。 比如生活中的实例: 只有一个的windows任务管理器; 只有一个的windows回收站。...
  • 在探讨ThinkPHP框架中构造函数__construct()和初始化函数_initialize()的区别之前,我先看看ThinkPHP中涉及两个函数的源代码1、控制器基类:think/Controller.php/*** 构造方法* @param Request $request Request...
  • 自定义函数 (user-defined function UDF)就是用一个象ABS() 或 CONCAT()这样的固有(内建)函数一样作用的新函数去扩展MySQL。所以UDF是对MySQL功能的一个扩展创建和删除自定义函数语法:创建UDF:CREATE[AGGREGATE]...
  • 无需显式调用构造函数,这些构造函数会在实例化时自动调用。构造函数允许的访问说明符/修饰符构造函数允许使用public,protected和private修饰符。创建单例类时,我们可以在Java中使用私有构造函数。Singleton的目的...
  • 到目前为止我有一个PHP类的构造函数public function __construct ($identifier = NULL){// Return me.if ( $identifier != NULL ){$this->emailAddress = $identifier;if ($this->loadUser() )return $this;...
  • = null, val name: String, val active: Boolean)我需要通过反射来调用它的构造函数.我尝试了以下代码private fun createEntity(constructor: Constructor, vararg args: T) : Any {return construc...
  • 我对OO编程有点陌生,很难理解为什么一种机制有效而另一种机制无效。...我尝试直接从构造函数返回句柄的尝试失败。但是,在创建实例之后,可以从类方法或从class(?)方法获得成功。这是类定义和示例脚本...
  • Java函数构造方法

    2021-02-27 19:34:46
    使用Java构造函数创建对象Java构造函数创建一个已定义对象的新实例。 本文讨论如何使用Java构造函数方法创建Person对象。注意:对于本示例,你需要在同一文件夹中创建两个文件:Person.java定义Person类,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 302,293
精华内容 120,917
关键字:

数据库什么是构造函数