我的代码是:
class Foo {
public int a=3;
public void addFive() {
a+=5;
System.out.print("f ");
}
}
class Bar extends Foo {
public int a=8;
public void addFive() {
this.a += 5;
System.out.print("b ");
}
}
public class TestClass {
public static void main(String[]args) {
Foo f = new Bar();
f.addFive();
System.out.println(f.a);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
b 3
Run Code Online (Sandbox Code Playgroud)
请解释一下,为什么这个问题的输出是"b 3"而不是"b 13",因为该方法被覆盖了?
我遇到了一个面试问题:
class Test {
int a ;
int b;
char c;
}
Run Code Online (Sandbox Code Playgroud)
这个类的内存对象将采用多少以及实现时的原因:
a)32位计算机
b)64位计算机
我的答案是:
For 32-bit: 4+4+2+8 = 18 bytes
For 64-bit: 4+4+2+16 = 26 bytes
Run Code Online (Sandbox Code Playgroud)
由于分配了一些额外的内存,在32位系统中是8个字节,在64位系统中是16个字节,除了正常的对象大小.
你能否对这个陈述作出一些解释.
PS:我也想分享一个我从其他来源得到的答案(不能依赖,想要验证):
在32位pc对象占用比其数据成员定义的实际obj大小多8个字节.....并且在64位pc对象占用比其数据成员定义的实际对象大小多16个字节....现在问题出现了为什么会发生...其背后的原因据我所知是:::在32位pc中,前8个字节由JVM保留用于引用类定义,对齐,超类和子类的空间等.对于64位,它为这些保留16个字节.有一个公式用于计算对象在创建时需要多少堆空间,并计算为.......Shallow Heap Size = [对类定义的引用] +超类字段的空间+实例字段的空间+ [alignment]
你如何计算对象"本身"需要多少内存?显然有一个公式:
Shallow Heap Size = [对类定义的引用] +超类字段的空间+实例字段的空间+ [alignment]
似乎没有太大帮助,是吗?让我们尝试使用以下示例代码应用公式:
class X {
int a;
byte b;
java.lang.Integer c = new java.lang.Integer();
}
class Y extends X {
java.util.List d;
java.util.Date e;
}
Run Code Online (Sandbox Code Playgroud)
现在,我们努力回答的问题是 - Y的实例需要多少浅堆大小?假设我们使用的是32位x86架构,让我们开始计算它:
作为一个起点 - Y是X的子类,因此它的大小包括来自超类的"东西".因此,在计算Y的大小之前,我们考虑计算X的浅尺寸.
跳到X上的计算,前8个字节用于引用其类定义.此引用始终存在于所有Java对象中,并由JVM用于定义以下状态的内存布局.它还有三个实例变量 - 一个int,一个Integer和一个byte.这些实例变量需要堆如下:
它应该是一个字节.内存中有1个字节.我们的32位架构中的int需要4个字节.对Integer的引用也需要4个字节.注意,在计算保留堆时,我们还应该考虑包含在Integer对象中的原语的大小,但是由于我们在这里计算浅堆,我们在计算中只使用4个字节的引用大小.那么 …
我尝试使用for-loop和double数据类型以典型方式找到大数的阶乘,例如8785856.
但结果显示无穷大,可能是因为它超出了极限.
所以请指导我找到一个非常大的阶乘的方法.
我的代码:
class abc
{
public static void main (String[]args)
{
double fact=1;
for(int i=1;i<=8785856;i++)
{
fact=fact*i;
}
System.out.println(fact);
}
}
Run Code Online (Sandbox Code Playgroud)
输出: -
Infinity
Run Code Online (Sandbox Code Playgroud)
我是Java的新手,但他已经学会了一些IO处理的概念.
我的代码是:
public class Box
{
public static void main(String[] args)
{
Integer z = new Integer(43);
z++;
Integer h = new Integer(44);
System.out.println("z == h -> " + (h == z ));
}
}
Run Code Online (Sandbox Code Playgroud)
输出: -
z == h -> false
Run Code Online (Sandbox Code Playgroud)
当两个对象的值相等时,为什么输出为false?
有没有其他方法可以使对象相等?
我有两个XSLT变量,如下所示:
<xsl:variable name="staticBaseUrl" select="'https://www.hello.com/htapi/PrintApp.asmx/getGames?contentId=id_sudoku&uniqueId="123456"&pageformat=a4'" />
<xsl:variable name="dynamicUrl" select="'https://www.hello.com/htapi/PrintApp.asmx/getGames'" />
Run Code Online (Sandbox Code Playgroud)
如何检查第二个字符串(dynamicUrl)是否是第一个字符串(staticBaseUrl)的子字符串?
为什么在将数字除以零时有如此不同的答案:
我的代码:
class Test {
public static void main(String[] args){
int a = (int)(3/0.0F);
System.out.println(a);
System.out.println(3/0.0F);
System.out.println(3/0);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
2147483647
Infinity
Exception in thread "main" java.lang.ArithmeticException: / by zero
Run Code Online (Sandbox Code Playgroud)
每当我将一个数字除以一个整数(byte,short,int,long)时,它就会抛出ArithmeticException,这与使用实数(float,double)完成时不同.为什么?
我的代码是: -
class abc<T> {
T a, b;
abc(T p, T q) {
a = p;
b = q;
}
void disp() {
System.out.println("\na = " + a);
System.out.println("b = " + b);
System.out.println("a/b is of class type : " + a.getClass().getName());
}
}
class temp {
public static void main(String...args) {
abc<Integer> a1;
a1 = new abc <Integer>(11, 22);
abc<Byte> a2 = new abc <Byte>(50,5);
a1.disp();
a2.disp();
}
}
Run Code Online (Sandbox Code Playgroud)
输出: -
temp.java:23: cannot find symbol
symbol : constructor abc(int,int) …Run Code Online (Sandbox Code Playgroud) 我的代码是: -
#include<stdio.h>
#include<conio.h>
#define sq(x) x*x*x
void main()
{
printf("Cube is : %d.",sq(6+5));
getch();
}
Run Code Online (Sandbox Code Playgroud)
输出是: -
Cube is : 71.
Run Code Online (Sandbox Code Playgroud)
现在请帮我解释为什么输出是71而不是1331 ......
先感谢您.
我的代码是:
#include<stdio.h>
int main() {
int a=10, b;
a >= 5 ? b=100 : b=200;
printf("%d %d", a, b);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这里出现了条件运算符行中的"Lvalue Required".
你能解释一下为什么吗?
顺便说一句,相同的程序完全适用于C++.
这是我的代码......
class info{
public static void main (String[]args) throws IOException{
char gen;
while(true) { //problem occurs with this while
System.out.print("\nENTER YOUR GENDER (M/F) : ");
gen=(char)System.in.read();
if(gen=='M' || gen=='F' || gen=='m' || gen=='f'){
break;
}
}
System.out.println("\nGENDER = "+gen);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的输出......
ENTER YOUR GENDER (M/F) : h
ENTER YOUR GENDER (M/F) :
ENTER YOUR GENDER (M/F) :
ENTER YOUR GENDER (M/F) : m
GENDER = m
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我理解为什么这么多次要求性别.
我的代码是: -
class SplitString {
public static void main(String[] args) {
Pattern p;
String test = "a1b2c3";
String[] token1 = test.split("\\d");
System.out.println("first case : " + token1.length);
for (String s : token1)
System.out.print(s + " ");
String[] token2 = test.split("\\b");
System.out.println("\n\nsecond case : " + token2.length);
for (String s : token2)
System.out.print(s + " ");
String[] token3 = test.split("\\a");
System.out.println("\n\nthird case : " + token3.length);
for (String s : token3)
System.out.print(s + " ");
}
}
Run Code Online (Sandbox Code Playgroud)
输出: -
first case …Run Code Online (Sandbox Code Playgroud) 我知道这是一个愚蠢的问题,但我仍然需要这样做.这是java应用程序中的基本程序,我想同时使用3个查询来打印表.
(在这种情况下,我没有使用任何主键,所以请帮助我解决这个问题,而不要将我的属性作为主键 - 我知道这不是一个好习惯,但现在我需要完成它.)
我的代码:
Connection con = null;
Statement stat1 = null, stat2 = null, stat3 = null;
ResultSet rs1, rs2, rs3;
stat1 = con.createStatement();
stat2 = con.createStatement();
stat3 = con.createStatement();
String str = "\nProduct\tC.P\tS.P.\tStock\tExpenditure\tSales";
info.setText(str);
String s1 = "SELECT type, cp, sp, stock FROM ts_items GROUP BY type ORDER BY type";
String s2 = "SELECT expenditure FROM ts_expenditure GROUP BY type ORDER BY type";
String s3 = "SELECT sales FROM ts_sales GROUP BY type ORDER BY type";
rs1 …Run Code Online (Sandbox Code Playgroud) 我已经在android上制作了一个计算器应用程序,但每当我做一些这样的乘法:
23.3 x 3.3
Run Code Online (Sandbox Code Playgroud)
我得到的答案是这样的:
76.988999999999
Run Code Online (Sandbox Code Playgroud)
现在请告诉我如何使用此应用程序解决此冲突.答案应该是这样的
76.89
Run Code Online (Sandbox Code Playgroud) java double android floating-accuracy floating-point-precision