小编Cei*_*cko的帖子

为什么"短期三十= 3*10"是一项法律任务?

如果在算术运算中short自动提升int,那么为什么:

short thirty = 10 * 3;
Run Code Online (Sandbox Code Playgroud)

short变量的合法分配thirty

反过来,这个:

short ten = 10;
short three = 3;
short thirty = ten * three; // DOES NOT COMPILE AS EXPECTED
Run Code Online (Sandbox Code Playgroud)

以及:

int ten = 10;
int three = 3;
short thirty = ten * three; // DOES NOT COMPILE AS EXPECTED
Run Code Online (Sandbox Code Playgroud)

不编译,因为如果没有按预期方式转换,则不允许int为a 赋值short.

关于数值文字有什么特别之处吗?

java short type-promotion

101
推荐指数
2
解决办法
6182
查看次数

Log4j2 DefaultRolloverStrategy的max属性如何真正起作用?

RollingRandomAccessFileAppender只配置了一个OnStartupTriggeringPolicyset,但是当我将max属性设置DefaultRolloverStrategy为某个数字时,日志会无限期地生成超过该数量.

这是我的log4j2.xml:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
        <RollingRandomAccessFile 
            name="RollingRAF" 
            fileName="logs/app.log"
            filePattern="logs/app-%d{dd-MMM-yyyy@HH.mm.ss}.log">
            <PatternLayout>
                <Pattern>%d %p %c{1.} %m%n</Pattern>
            </PatternLayout>
            <Policies>
                <OnStartupTriggeringPolicy />
            </Policies>
            <DefaultRolloverStrategy max="5"/>
        </RollingRandomAccessFile>
    </Appenders>
    <Loggers>
        <Logger name="myLogger" level="warn">
            <AppenderRef ref="RollingRAF"/>
        </Logger>
        <Root level="error">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>
Run Code Online (Sandbox Code Playgroud)

是因为我的名字模式中没有迭代器吗?

是因为我的文件名精度设置为秒?

是因为我只有OnStartupTriggeringPolicy这套?

或者这里发生了什么?

我的目标是设置滚动配置,记录最近5次应用程序运行.

java configuration logging rollingfileappender log4j2

26
推荐指数
1
解决办法
3万
查看次数

为什么在包含两者的表达式中在postfix之前评估前缀?

根据Oracle运算符优先级规范,执行如下操作:

x-- // Returns x, then subtracts 1 from x.
Run Code Online (Sandbox Code Playgroud)

应优先于:

--x // Subtracts 1 from x, then returns x.
Run Code Online (Sandbox Code Playgroud)

所以,鉴于下面的小片段,为什么:

int x = 5;
int y = --x * 5 + x--;
System.out.println(x+" vs "+y);
Run Code Online (Sandbox Code Playgroud)

打印3 vs 24而不是3 vs 20

假设运算符优先级的给定顺序,可以将代码段的第2行分解为以下伪块(先前评估的值放在方括号中):

  1. 评估 x--

  2. 评估 --x

  3. 评估 [--x] * 5

  4. 评估 [--x * 5] + [x--]

  5. 评估 y = [--x * 5 + x--]

然后将解决如下:

1点之后 returns 5 sets x to 4

2点以后 …

java operator-precedence unary-operator

4
推荐指数
1
解决办法
370
查看次数