我有一个奇怪的时刻.
ArrayList<Object> a = new ArrayList<Object>();
a.add(new Socket());
a.add(new Thread());
a.add("three");
a.add(a);
a.add(new Object());
for(Object output : a) {
System.out.println(output);
}
Run Code Online (Sandbox Code Playgroud)
输出:
Socket[unconnected]
Thread[Thread-0,5,main]
three
[Socket[unconnected], Thread[Thread-0,5,main], three, (this Collection)]
java.lang.Object@615e7597
Run Code Online (Sandbox Code Playgroud)
每次运行时,新对象总是给出相同的Hex String(Java doc Integer.toHexString(hashCode())),为什么会这样?为什么每次都不会产生不同的字符串?或者它是否重复使用同一个对象,因为它可以?
编辑:我尝试了几次执行Java应用程序.
哪个是较小的存储:身份主键还是序列主键?我所说的序列的一个例子如下.
CREATE SEQUENCE TestSeq
AS INTEGER
START WITH 1
INCREMENT BY 1;
CREATE TABLE Tab1
(tab1_ID INTEGER DEFAULT NEXT VALUE FOR TestSeq PRIMARY KEY,
other_stuff VARCHAR(15) NOT NULL);
Run Code Online (Sandbox Code Playgroud)
奖励:任何推荐的序列链接也会受到欢迎.我试图找出那里的地方与身份.
我的customer_profile表中有两列,"birthdate"和"gender".我想要检测用户是否已完成他们的个人资料.但是,通过使用以下条件,我无法检查客户是否已完成其个人资料.它只返回"配置文件完成".
我试过改变条件"&& to ||" 并且"|| to &&"和all to"&&"但它会返回意外的结果.
有这么多条件的原因是因为有时客户没有填写数据或将其留空或在性别字段或生日字段中键入"0".如果只有两个条件,我就不必面对这个问题了.
下面是我比较这两列的代码.我要检查的是客户数据是否为空; 这两列上为NULL或0.
$sql_stmt = "SELECT customer_id, first_name, email, phone, birthdate, gender FROM customers
WHERE customer_id = 1 LIMIT 1";
$sql = mysqli_query($conn, $sql_stmt) or die(mysqli_error($conn));
$row = mysqli_fetch_array( $sql );
extract($row);
if(($birthdate == '' && $birthdate == NULL && $birthdate == '0000-00-00') || ($gender == '' && $gender == 0 && $gender == NULL)){
echo "Profile Not Complete";
} else {
echo "Profile Complete";
}
Run Code Online (Sandbox Code Playgroud)