首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >charvariable=(char)(charvariable+3)这个语法是什么意思?

charvariable=(char)(charvariable+3)这个语法是什么意思?
EN

Stack Overflow用户
提问于 2014-12-04 21:05:50
回答 2查看 81关注 0票数 0

我一直在互联网上寻找凯撒密码,虽然我理解循环,但我不明白为什么这一行代码能够将一个字符转移到另一个字符?我不明白这句话:

代码语言:javascript
复制
        letter = (char)(letter - 26);

当我取出(char)时,它不起作用,而且我从未见过它的类型在括号中,后面跟着一个操作。

希望这是一个简单的问题,谢谢你的帮助。

代码语言:javascript
复制
for (int i = 0; i < buffer.Length; i++)
    {
        // Letter.
        char letter = buffer[i];
        // Add shift to all.
        letter = (char)(letter + shift);
        // Subtract 26 on overflow.
        // Add 26 on underflow.
        if (letter > 'z')
        {
//The following line is the line I don't understand.  Why char in parentheses then another parentheses?
        letter = (char)(letter - 26);
        }
        else if (letter < 'a')
        {
        letter = (char)(letter + 26);
        }
        // Store.
        buffer[i] = letter;
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-04 21:13:59

(char)是一个演员。这意味着它接受一种类型的值,并将其转换为另一种类型的值。因此,如果xint,则(double)x生成与整数值相同的值的double

这个表达式中之所以需要(char),是因为intintlong类型的值做了所有的整数运算。因此,即使letterchar,在表达式letter + 26中,letter将自动转换为int,然后将26添加到整数中。(char)将其转换为char类型(从0到65535是一个整数值)。Java不会自动将较大的整数类型(int,其值从-2147483648到2147483647)转换为较短的整数类型(char),因此必须使用强制转换。

但是,Java确实允许这样做:

代码语言:javascript
复制
letter += 26;

它具有相同的效果,而且不需要施放。

票数 1
EN

Stack Overflow用户

发布于 2014-12-04 21:11:03

英文字母表中有26个字母,字符是一个完整的类型。

代码语言:javascript
复制
char ch = 'Z' - 25;
System.out.println(ch); // <-- A

JLS-4.2.1 -积分类型和值说(部分),

对于char,从‘\\0000’到'\uffff‘包括在内,即从0到65535

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27304064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档