java中这段代码为啥报错啊

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中这段代码为啥报错啊相关的知识,希望对你有一定的参考价值。

代码如下:
class Tick

private int ck;
public int getCk()
return ck;



class Ticket

public static void main(String[] args)
Tick t = new Tick();

while(t.getCk()>0)
System.out.println(t.getCk());
t.getCk()--; //这句话报错:意外的类型




如上,图就不截了,t.getCk()--;这句代码报错了,求解,为什么啊,这是什么错误?

java之中只有变量才能使用++ 或者-- ,t.getCk() 不是变量 所以不能使用++ 和 --操作。
望楼主采纳!追问

t.getCK()返回的不是int型的成员变量吗。。

参考技术A 虽然不知道是啥意思,不过t.getCk()--的这个--是不是有错或是前后放置不对呢

如果 Java 是强类型的,那么为啥这段代码会编译? [关闭]

【中文标题】如果 Java 是强类型的,那么为啥这段代码会编译? [关闭]【英文标题】:If Java is Strongly typed then why does this code compile? [closed]如果 Java 是强类型的,那么为什么这段代码会编译? [关闭] 【发布时间】:2016-03-01 17:42:00 【问题描述】:

我对强类型的理解是该语言不会进行隐式类型转换。但是,此代码将 char 转换为它的 ascii 值,然后使用该值。

static char x = 'j';
static int y = 7;

public static void main(String[] args)
    System.out.println(y+x);

【问题讨论】:

“强类型”对不同的人有不同的含义,但在 Java 中有很多隐式转换。鉴于此问题依赖于“强类型”的含义,因此我投票决定将其作为基于意见的问题结束。 字符只是一个无符号的 16 位数字。这里没什么特别的。 【参考方案1】:

如果 Java 是强类型的,那么为什么这段代码会编译?

因为JLS 是这么说的。在这种情况下,我们是widening a primitive,char 可以变成 int。然后我们可以添加两个整数并输出结果。然后,您可以根据需要将 narrow int 转换为 char。

System.out.println((char) (y+x));

【讨论】:

【参考方案2】:

这与强类型或弱类型无关。您的代码是两个强类型变量之间的隐式转换示例 - charint

您的 System.out.println(y+x) 实际上已编译为 System.out.println(y+(int)x);,因此会调用 System.out.println(int arg0)

演员 (int)x 将字符转换为其 ascii 值仅仅是因为 Java 将字符存储为 UTF-16 值。

【讨论】:

【参考方案3】:

Java 是一种强类型编程语言,因为每个变量都必须用数据类型声明。一个变量在不知道它所能容纳的值范围的情况下是无法开始生命的,而且一旦被声明,变量的数据类型就不能改变。

例子:

以下声明是允许的,因为具有“hasDataType”的变量被声明为布尔数据类型:

 boolean hasDataType;

在它的余生中,hasDataType 的值只能是 true 或 false。

以及为什么在您的示例中将 char 转换为数字。

System.out.println(y+x);

你可以看看这个example

【讨论】:

您在这里定义的是静态类型与动态类型。 Op 正确地指的是弱类型与强类型。您正在回答与他/她所要求的完全不同的问题

以上是关于java中这段代码为啥报错啊的主要内容,如果未能解决你的问题,请参考以下文章

Java 中这段代码中的 ExecutorService.submit 和 ExecutorService.execute 有啥区别?

为啥我的这段python代码运行不出来结果,也没报错,跪求大神指点

C++,大佬们看下这里报错是为啥?可是这代码能AC啊?!

为啥这段代码不能在 Java 中运行? [复制]

thinkphp中这段代码什么意思? $m->pic=$info[0]["savename"]; 这个$info[0]求详解

为啥这段 Java 代码没有利用所有 CPU 内核?