首页编程java编程java的printf方法为什么显示错误 java,为什么显示方法 printf对于参数long不适用

java的printf方法为什么显示错误 java,为什么显示方法 printf对于参数long不适用

编程之家2023-10-11120次浏览

其实java的printf方法为什么显示错误的问题并不复杂,但是又很多的朋友都不太了解java,为什么显示方法 printf对于参数long不适用,因此呢,今天小编就来为大家分享java的printf方法为什么显示错误的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

java的printf方法为什么显示错误 java,为什么显示方法 printf对于参数long不适用

java,为什么显示方法 printf对于参数long不适用

1.如果你得到是一个Object对象,可以用if(obj instanceof String)来判断是否是String对象,int是基本类型不可以这么判断,只能用它的包装类Integer,同样用instanceof 2.如果set方法只能接受一个参数,而且必须有int的话,可以写多个set方法,如set(String),set(int),编写不同的处理逻辑 3.instanceof也是反射的一种方式 4.如果有2个Object的参数,可以用if(obj1.getClass()==obj2.getClass())来判断类型是否相同,如果要得到类型名,可以用obj.getClass().getName()来获得对象的类名

关于JAVA中printf的用法

public class TestPrintf{

public static void main(String[] args)

java的printf方法为什么显示错误 java,为什么显示方法 printf对于参数long不适用

{

//定义一些变量,用来格式化输出。

double d= 345.678;

java的printf方法为什么显示错误 java,为什么显示方法 printf对于参数long不适用

String s="你好!";

int i= 1234;

//"%"表示进行格式化输出,"%"之后的内容为格式的定义。

System.out.printf("%f",d);//"f"表示格式化输出浮点数。

System.out.println();

System.out.printf("%9.2f",d);//"9.2"中的9表示输出的长度,2表示小数点后的位数。

System.out.println();

System.out.printf("%+9.2f",d);//"+"表示输出的数带正负号。

System.out.println();

System.out.printf("%-9.4f",d);//"-"表示输出的数左对齐(默认为右对齐)。

System.out.println();

System.out.printf("%+-9.3f",d);//"+-"表示输出的数带正负号且左对齐。

System.out.println();

System.out.printf("%d",i);//"d"表示输出十进制整数。

System.out.println();

System.out.printf("%o",i);//"o"表示输出八进制整数。

System.out.println();

System.out.printf("%x",i);//"d"表示输出十六进制整数。

System.out.println();

System.out.printf("%#x",i);//"d"表示输出带有十六进制标志的整数。

System.out.println();

System.out.printf("%s",s);//"d"表示输出字符串。

System.out.println();

System.out.printf("输出一个浮点数:%f,一个整数:%d,一个字符串:%s",d,i,s);

//可以输出多个变量,注意顺序。

System.out.println();

System.out.printf("字符串:%2$s,%1$d的十六进制数:%1$#x",i,s);

//"X$"表示第几个变量。

}

}

java建构函式能否被继承,为什么

java建构函式能否被继承,为什么?

不能,因为子类继承父类的时候,先执行父类建构函式;具体的说就是执行父类时就会先“呼叫”父类的建构函式,注意“呼叫”和继承不是一个含义,实质上是“自动执行”。

继承(extends)的含义其实是“扩充套件”,子类完全没必要扩充套件父类的建构函式,因为反正每次调子类的时候都会“自动执行”它父类的建构函式,如果真的需要子类建构函式特殊的形式,子类直接修改或过载自己的建构函式就好了。

估计是你龚“建构函式”的意义本身不理解,“呼叫”一个类有“继承”和“组合(说白了new一个类)”两种方式,当你“呼叫”一个类的时候就会“自动执行”它的“建构函式”。

java中,子类能不能继承父类的构造方法??

你老师是对的,不过一下子说不清楚。给你个例子。

class A{

public A(){} 1:无引数构造方法。

public A(String s){} 2.

}

class B extends A{

public B(String s){

super(s); 3.

}

}

说明:如果没有1处的无引数构造方法,那么3处一定要主动呼叫父类带引数的构造方法。

如果有1处的构造方法,那么3处程式码可以不要,因为Java会自动预设呼叫父类的无引数构造方法。

记住一点:在构造子类时,一定会呼叫到父类的构造方法。

所以父阀要么有一个预设的无引数构造,这样Java会自动呼叫这个无引数的构造。如果父类没有无引数的构造,那么就要你自己在子类的构造中,通过super()的方式呼叫父类的构造。

java的继承中的构造方法

java继承中对建构函式是不继承的,只是呼叫(隐式或显式)。

举例说明:

public class FatherClass{

public FatherClass(){

System.out.println(100);

}

public FatherClass(int age){

System.out.println(age);

}

}

public class SonClass extends FatherClass{

public SonClass(){

}

public SonClass(int c){

抚 System.out.println(1234);

}

public static void main(String[] args){

SonClass s= new SonClass(66);

}

}

编译后执行结果如下:

分析:SonClass s= new SonClass(66);

执行这句时,呼叫

public SonClass(int c){

System.out.println(1234);系统会自动先呼叫父类的无参建构函式(super())

}

在这个建构函式中,等价于

public SonClass(int c){

super();必须是第1行,否则不能编译

System.out.println(1234);

}

所以结果是 100 1234

在建立子类的物件时,Java虚拟机器首先执行父类的构造方法,然后再执行子类的构造方法。在多级继承的情况下,将从继承树的最上层的父类开始,依次执行各个类的构造方法,这可以保证子类物件从所有直接或间接父类中继承的例项变数都被正确地初始化。

3.如果子类建构函式是这样写的

public SonClass(int c){

super(22);必须是第1行,否则不能编译

显式呼叫了super后,系统就不再呼叫无参的super()了;

System.out.println(1234);

}

执行结果是 22

1234

总结1:建构函式不能继承,只是呼叫而已。

如果父类没有无参建构函式

建立子类时,不能编译,除非在建构函式程式码体中第一行,必须是第一行显式呼叫父类有参建构函式

如下:

SonClass(){

super(777);显示呼叫父类有参建构函式

System.out.println(66);

}

如果不显示呼叫父类有参建构函式,系统会预设呼叫父类无参建构函式super();

但是父类中没有无参建构函式,那它不是不能呼叫了。所以编译就无法通过了。

总结2:建立有参建构函式后,系统就不再有预设无参建构函式。

如果没有任何建构函式,系统会预设有一个无参建构函式。...

建构函式可以继承吗?

建构函式是可以继承的

但是建构函式不能被显示的呼叫的

,由于你的有引数要传递所以要这样呼叫才行

#include

class A

{

public:

A(int&x)

{

s=x;

}

int getS()

{

return s;

}

private:

int s;

};

class B:public A

{

public:

B::B(int x):A(x)

{}

void print()

{

cout<

}

};

void main()

{

B b(2);

b.print();

}

你可以用一个PRINTF语句去测试他们的执行的

java中一个子类是否可以继承父类的构造方法

构造方法不会被继承,当子类例项化时会自行先去找父类构造方法,之后再找自身构造方法。程式码说明(java为例)

父类class person{ public person{父类构造方法 System.out.println("我是父类无参构造方法");}}public class student extends person{ public static void main(String[] args){例项化student student stu1= new student();}}执行上述程式码,在控制台输出:我是父类无参构造方法

关于继承构造方法的问题

子类继承父类的话,当子类被实力化就会去呼叫父类的预设构造方法.这是不可改变的.如果你不想显示这些值,就把预设的构造方法里的程式码都去掉.

另一种情况就是,你在实力化的时候传一些引数进去,就不会呼叫预设的构造函数了.前提是你传的引数要有相应的建构函式来匹配.

如果又想呼叫预设的建构函式的话,就用super();

java中子类不写构造方法而父类写构造方法,子类继承了父类哪个构造方法?

您好,提问者:太不专业了,构造方法怎么会存在继承?

不写预设的有个隐士的构造方法,举个例子吧:

class A{ void add();}public class B extends A{ public B(){ super();这个super也是隐士的。}}如何知道有个预设的super()呢?看下面程式码class AA{ public AA{ System.out.println("super()");}}public class BB extends AA{ public static void main(String[] args){ new BB();输出super();}}

继承关系下,构造方法的呼叫规则有哪些?

第一个规则:子类的构造过程中,必须呼叫其父类的构造方法。一个类,如果我们不写构造方法,那么编

译器会帮我们加上一个预设的构造方法,所谓预设的构造方法,就是没有引数的构造方法,但是如果你自己写

了构造方法,那么编译器就不会给你添加了,所以有时候当你new一个子类物件的时候,肯定呼叫了子类的构

造方法,但是在子类构造方法中我们并没有显示的呼叫基类的构造方法,就是没写,如:super();并没有这样

写,但是这样就会呼叫父类没有引数的构造方法,如果父类中没有没有引数的构造方法就会出错。

第二个规则:如果子类的构造方法中没有显示的呼叫基类构造方法,则系统预设呼叫基类无引数的构造方

法注意:如果子类的构造方法中既没有显示的呼叫基类构造方法,而基类中又没有预设无参的构造方法,则编

译出错,所以,通常我们需要显示的:super(引数列表),来呼叫父类有引数的建构函式。

java父类的构造方法为什么不能被子类继承

子类=父类﹢新增的变数﹢新增的方法。物件语言的构造器作用在于对类建立例项物件时完成物件的初始化工作(为变数申请记忆体空间等)

因此,子类川构造器除了承担著初始化子类的新增变数和方法,还要初始化父类自身新增加的变数和方法。一般来说,如果在子类的构造器中没有使用super()呼叫父类相应的构造器,子类的构造器会自动呼叫父类预设的,也就是不带引数的构造器来初始化父类的东西。

而Java类的预设构造器,当你没有为你写的类建造构造器的时候,Java会自动帮你建立这个预设构造器,但是当你自己编写了构造器后,你自己编写构造器将会覆盖掉预设的构造器,就是说预设的构造器不存在。那么这个时候,你在继承的子类里面没有显示新增super()函式呼叫你在父类里编写的父类构造器,子类的构造器将不能自动找到父类的构造器。找不到父类的构造器意味着什么?意味着你的子类例项化的时候找不到父类的构造器来初始化父类的东西,不能完成类例项物件的初始化工作,你说你的子类能不出现错误?!

所以,在子类的构造器中需不需要新增super()呼叫父类相应的构造器,只需要考虑子类的构造器才初始化的时候能不能完成所有变数和方法的初始化就可以了。另外,根据自己初始化工作的需要使用super()呼叫相应的父类构造器来初始化也是有必要的。

所以你所说的子类不能继承父类构造器,这说明你没有显式的呼叫seper(),而且父类构造器被你的子类覆盖或呼叫的父类中没有无参构造器所引起的。

Java继承中的构造方法问题

你好,很高兴为你解答。

这段程式码提示B的建构函式错误。这是因为B继承A,B的建构函式会自动呼叫A的预设建构函式(即不带引数的建构函式),但A没有定义预设建构函式,所以就会报错。有两种改法:

1)在A中增加预设建构函式。如下:

class A{

int a;

String name;

String sex;

A(){修改这儿

}

A(int a, String name, String sex){

this.a= a;

this.name= name;

this.sex= sex;

}

void ShowMess(){

}

}

class B extends A{

int age;

B(int a, String name, String sex, int age){

this.a=a;

this.name=name;

this.sex=sex;

this.age=age;

this.age= age;

}

void ShowMess(){

System.out.println("a+name+sex+age");

}

}

2)修改B的建构函式,显式地呼叫A的非预设建构函式。如下:

class A{

int a;

String name;

String sex;

A(int a, String name, String sex){

this.a= a;

this.name= name;

this.sex= sex;

}

void ShowMess(){

}

}

class B extends A{

int age;

B(int a, String name, String sex, int age){

super(a,name,sex);修改这儿

this.age= age;

}

void ShowMess(){

System.out.println("a+name+sex+age");

}

}

在C语言里,printf怎么输出2个变量

C语言中输出两个变量的方法如下:

1.首先需要先定义两个变量。这里演示以定义两个整形变量A,B为例。

2.定义完成后,需要为A,B赋值,这样才能在后面的输出语句中被输出到屏幕显示出来。

3.最后就可以使用printf语句来输出变量了,以输出A,B变量为例,格式为pirntf("%d%d",A,B);其中一个%d代表一个变量。

扩展资料:

关于printf()函数的介绍如下:

1.printf()函数是式样化输出函数,一般用于向准则输出设备按规定式样输出消息。正在编写步骤时经常会用到此函数。printf()函数的挪用式样为: printf("<式样化字符串>",<参量表>);

2.其中式样化字符串包括两部分内容:一部分是正常字符,这些字符将按原样输出;另一部分是式样化规定字符,以"%"开端,后跟一个或几个规定字符,用来确定输出内容式样。

3.注意:函数printf从右到左压栈,然后将先读取放到栈底,最后读取的放在栈顶,处理时候是从栈顶开始的,所以我们看见的结果是,从右边开始处理的。

参考资料:百度百科-printf

关于java的printf方法为什么显示错误到此分享完毕,希望能帮助到您。

java编程需要看什么书?学java看什么书java中static什么意思 java语法中的static是什么意思