为什么构造函数对于原始类型不是必需的?

时间:2017-11-20 16:01:11

标签: java oop object primitive-types

我正在寻找问题的答案

  1. 为什么java中的原始类型不需要构造函数?
  2. 是因为原始类型在使用前不需要构建吗?

3 个答案:

答案 0 :(得分:1)

首先,您必须了解基本类型不是对象。它们的目的是帮助C用户切换到Java。此外,原始类型不存储任何实例变量,如对象,但它们本身就是值。 还值得注意的是,您也不需要调用扩展接口Number(Integer,Double,Long等)的任何类的构造函数。 Java中有一些问题,有时让它感觉它不完全像那样,但你应该在java中使用ethier原始类型或对象(除了,原始类型没有任何方法,所以你需要)用intInteger转换为Integer.valueOf(n),然后才能调用toString()

答案 1 :(得分:0)

构造函数是一种特殊的方法,其目的是创建一个新的对象实例,因为原始数据类型不是对象,所以它们没有构造函数或与之关联的方法。

但是,对于某些原始数据类型,Java具有原始包装类。

enter image description here

包装类在Integer类的情况下非常有用,您可以使用parseInt(String s),toBinaryString(int i)等方法,或者对Integer对象执行某些操作

即:

Integer i = new Integer(7);
byte b = i.byteValue();

答案 2 :(得分:0)

原始类型

声明原始类型,例如private void btnSave_Click(object sender, RoutedEventArgs e) { try { SqlConnection sqlCon = new SqlConnection(@"Data Source=(localdb)\mssqllocaldb; Initial Catalog=Storagedb;"); sqlCon.Open(); string Query1 = "insert into location(Storage, Shelf, columns, rows) values(" + txtWarehouse.Text + ", " + txtShelf.Text + ", " + txtColumn.Text + ", " + txtRow.Text + ")"; SqlCommand sqlCmd = new SqlCommand(Query1, sqlCon); SqlDataAdapter dataAdp = new SqlDataAdapter(sqlCmd); dataAdp.SelectCommand.ExecuteNonQuery(); sqlCon.Close(); } catch (Exception er) { MessageBox.Show(er.Message); } try { SqlConnection sqlCon = new SqlConnection(@"Data Source=(localdb)\mssqllocaldb; Initial Catalog=Storagedb;"); sqlCon.Open(); string Query3 = "SELECT LOCATION_ID FROM LOCATION WHERE storage='" + txtWarehouse.Text + "' AND shelf='" + txtShelf.Text + "' AND columns='" + txtColumn.Text + "' AND rows='" + txtRow.Text + "'"; SqlCommand sqlCmd1 = new SqlCommand(Query3, sqlCon); SqlDataReader dr = sqlCmd1.ExecuteReader(); ; while (dr.Read()) { string LocationId = dr[0].ToString(); dr.Close(); string Query2 = "insert into product(SKU, nimetus, minimum, maximum, quantity,location_ID,category_ID,OrderMail_ID) values ('" + txtSku.Text + "','" + txtNimetus.Text + "', '" + txtMin.Text + "', '" + txtMax.Text + "', '" + txtQuan.Text + "', '" + LocationId + "', '" + (cbCat.SelectedIndex+1) + "', '" + (cbMail.SelectedIndex+1) + "')"; SqlCommand sqlCmd = new SqlCommand(Query2, sqlCon); SqlDataAdapter dataAdp = new SqlDataAdapter(sqlCmd); dataAdp.SelectCommand.ExecuteNonQuery(); } sqlCon.Close(); } catch (Exception ed) { MessageBox.Show(ed.Message); } } 你可以看到它已经在生命中(即已经占用了记忆中的空间),即使它没有分配值,即使它没有被定义。
< / p>

物件

首先,对象是一个由状态,行为和身份组成的抽象概念。

    对象
  • 状态:信息封装
  • 行为:由对象为 instance
  • 的类中编写的方法定义
  • 标识:尽管原始类型如果它们具有相同的值是相同的,但如果它们具有相同的状态,则它们不是同一个对象,即它们是否封装相同的信息。 / LI>

为了赋予对象生命,声明是不够的,它还需要定义,即调用 a costructor。
不确定的文章很重要:实际上一个对象可以有许多不同的签名者,提供了不同的方法来初始化它。因此,不同的costuctors导致不同的状态和行为,这就是为什么需要构建对象的原因。