在一次采访中,有人问我要在给定问题上创建的对象数量:
String str1 = "First";
String str2 = "Second";
String str3 = "Third";
String str4 = str1 + str2 + str3;
Run Code Online (Sandbox Code Playgroud)
我回答说将在字符串池中创建6个对象。
三个变量中的每个变量都为3。
1代表str1 + str2(假设str)。
1代表str2 + str3。
1将代表str + str3(str = str1 + str2)。
我给出的答案正确吗?如果没有,正确答案是什么?
java string string-concatenation string-building string-pool
我在http://www.javabeginner.com/learn-java/java-object-typecasting上遇到过这个例子,在谈到显式类型转换的部分中,有一个例子让我感到困惑.
这个例子:
class Vehicle {
String name;
Vehicle() {
name = "Vehicle";
}
}
class HeavyVehicle extends Vehicle {
HeavyVehicle() {
name = "HeavyVehicle";
}
}
class Truck extends HeavyVehicle {
Truck() {
name = "Truck";
}
}
class LightVehicle extends Vehicle {
LightVehicle() {
name = "LightVehicle";
}
}
public class InstanceOfExample {
static boolean result;
static HeavyVehicle hV = new HeavyVehicle();
static Truck T = new Truck();
static HeavyVehicle hv2 = null;
public static void main(String[] …Run Code Online (Sandbox Code Playgroud) 数组实现为java中的对象吗?如果是这样,我在哪里可以查看数组类的源代码.我想知道数组中的长度变量是否被定义为常量,如果是这样,为什么它不是所有大写字母LENGTH使代码更容易理解.
我有一个Java SE 8 Spring 4.1.6-RELEASE应用程序,我正在实现该org.springframework.jdbc.core.RowMapper<T>接口,我java.sql.ResultSet对其T mapRow(ResultSet rs, int rowNum)方法中传递的接口有一些疑问.
当我检查ResultSet类时,我看到了一堆方法来获取列值:
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? Return Type ? Method ? Return (javadoc, se 8) ? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? String ? getString ? the column value; if the value is SQL NULL, the value returned is null ? ? boolean ? getBoolean ? the column value; if the value is SQL NULL, the value returned is false ? ? byte ? getByte ? the column value; if …
我需要知道Java中的哪个类多维数组完全延伸?
当我们分配
Object[] ref=new int[]{1,2,3};
Run Code Online (Sandbox Code Playgroud)
编译器抱怨对象是不同类型的.所以似乎一维数组扩展Object; 我已经知道了.
但是当我们分配时
Object[] ref2=new int[][]{{1,2,3},{4,5,6}};
Run Code Online (Sandbox Code Playgroud)
编译器不会抱怨.所以似乎二维数组扩展Object[].
但是当我打印它的超类名称时:
System.out.println(ref2.getClass().getSuperclass().getName());
Run Code Online (Sandbox Code Playgroud)
我有java.lang.Object.
所以有人能解释这里发生了什么吗?
作为一个实验,我试图int像这样扩展一个-array:
public class IntArrayExtension extends int[]{
// additional fields and methods.
}
Run Code Online (Sandbox Code Playgroud)
在类本身中添加一些与排序,交换,子数组构建等相关的方法.但是我在编译时遇到了这个错误:
IntArrayExtension.java:1: unexpected type
found : int[]
required: class
public class IntArrayExtension extends int[]{
^
1 error
Run Code Online (Sandbox Code Playgroud)
我很想知道:为什么Java不允许扩展数组?
我的疑问是这个:
在Java中,不允许从数组继承,即,不能执行以下操作:
class FloatVec extends float[]
{
// Vector methods.
}
FloatVec somevec = new FloatVec()[] { 1, 2, 3 }; // With array initializer.
Run Code Online (Sandbox Code Playgroud)
甚至更好:
class FloatVec3 extends float[3]
{
// Regular accessor.
public float getX() {
return this[0];
}
// Or say, make it the 'this' implicit like with other fields:
public void setVec(float x, float y, float z) {
[0] = x;
[1] = y;
[2] = z;
}
// And specific vec3 methods like:
public float …Run Code Online (Sandbox Code Playgroud) 数组是对象,所有对象都来自一个类.如果我执行以下代码:
public class Test {
public static void main(String[] args) {
String str = "Hello";
System.out.println(str.getClass());
}
}
Run Code Online (Sandbox Code Playgroud)
输出是class java.lang.String.
但是如果我执行以下内容:
public class Test {
public static void main(String[] args) {
int arr[] = new int[10];
System.out.println(arr.getClass());
}
}
Run Code Online (Sandbox Code Playgroud)
输出是class [I.
我的问题是:
instanceof操作员我应该如何使用它?如果我执行System.out.println(arr instanceof Object);,它完美地工作.可能重复:
Java是"传递引用"吗?
如果我们有大byte[]数组(如40Mb),我们想用方法发送它
method(array);
Run Code Online (Sandbox Code Playgroud)
数组会被复制吗?因此,Java env => 80Mb内存将增加另外40Mb ,对吗?
如果是,我们如何在调用方法后销毁'first'数组?
为什么Java编程语言数组不像常规类那样,例如它不能继承而且它的类中没有任何实用方法(例如a String)?
有许多方法可以设计用于数组,例如
swap()搜索方法,排序方法,分割/拼接方法等.
我正在开发一个java应用程序,我在其中使用Hashmap,它将字符串作为键,并将double作为值,但我知道Hashmap不能将原始类型作为泛型,但它可以使用double [].我可以知道为什么吗?
在 Java 中,在集合的尖括号 <> 内,我们应该提供像整数、字符串、字符等泛型,我们不能给出基元,但这是正确的列表/集合初始化:
List<int[]> ls = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)
基元数组可以定义为泛型吗?因为据我所知Java中<>都是用来定义泛型的。当我第一次看到这种初始化时,我感到惊讶和好奇,并且不相信。
如果我拥有class A {并class B extends A {愿意
B[] b = new B[1];
b[0] = new B();
System.out.println(b instanceof A[]);
Run Code Online (Sandbox Code Playgroud)
打印出真或假?
java ×13
arrays ×7
inheritance ×2
casting ×1
collections ×1
constants ×1
downcast ×1
generics ×1
hashmap ×1
jdbc ×1
jdbctemplate ×1
jvm ×1
jvm-hotspot ×1
spring ×1
string ×1
string-pool ×1
syntax ×1