java学习

最简单的应用程序

public class sample {

    public static void main(String[] args){

        System.out.println("We will not use 'Hello,World!'");

    }

}

运算符

加 +

减 -

乘 *

除法要考虑情况

若参与运算的都为整数则进行整数除法:15/2等于7,余数为15%7=2

否则进行浮点除法:15.0/2=7.5

数学函数

可以添加头文件

import static java.lang.Math.*;

或者方法书写时加上Math.

如sqrt方法表示算一个数的平方根

double a=121;

double b=sqrt(a);

System.out.println(b);//prints 11.0

pow方法计算一个数的多次幂

如计算2的3次幂

double x=2;

double y=3;

double b=pow(x,y);

System.out.println(b);//prints 8.0

类型转换

数据类型可以进行强制转换,但会造成信息丢失

double x=9.87;

int y=(int)x;

将double类型的x转换为int类型的y,此时y=9;

此转换自动舍弃的小数部分

若想进行舍入计算可以用到前面的数学函数

double x=9.87;

int y=(int) Math.round(x);

1.Math.round(x)计算9.87四舍五入的结果,得到10.0(注意,结果是long类型,但在这种情况下,可以看作是一个double值10.0,因为Math.round(double)的返回值在转换为long之前会被视为double,但实际上Java内部会处理为long,然后这里我们关心的是其数值,而不是类型)。

2.然后,(int) Math.round(x)将long类型的10(实际上是double值10.0被隐式转换为long,但在这个上下文中我们主要关注数值)转换为int类型的10。由于10在int类型的范围内,这个转换是安全的。

结合赋值

x += 4;

等价于:

x = x+4;

自增与自减

x++ 表示x=x+1

还有另一种前缀形式++x

前缀在运算时先自增

后缀则先用原数值参与运算再自增

int x=6;

int y=6;

int a=2*++x;//now a=14,x=7

int b=2*y++;//now b=12,y=6

关系和boolean运算符

检测相等==

检测不相等!=

如3==5值为false

3!=5值为true

还有<(小于),>(大于),<=(小于等于),>=(大于等于)

&&表示与

||表示或

两者都是短路方式判断的

比如e1&&e2若e1为false则结果必定为false,e2就不用判断了

三元操作符?:

条件 ? 表达式1 : 表达式2;

这里,如果“条件”为真(true),则整个表达式的结果是“表达式1”的值;如果“条件”为假(false),则结果是“表达式2”的值。这个操作符使得在某些情况下,可以避免使用if-else语句,从而使代码更简洁。

位运算符

按位与(AND) - &

对于每一位,只有两个相应的位都为1时,结果位才为1,否则为0。

int a = 60; /* 60 = 0011 1100 */

int b = 13; /* 13 = 0000 1101 */

int c = a & b; /* 12 = 0000 1100 */v

按位或(OR) - |

对于每一位,只要两个相应的位中有一个为1,结果位就为1。

int a = 60; /* 60 = 0011 1100 */

int b = 13; /* 13 = 0000 1101 */

int c = a | b; /* 61 = 0011 1101 */

按位异或(XOR) - ^

对于每一位,当两个相应的位不相同时,结果位为1;相同时,结果位为0。

int a = 60; /* 60 = 0011 1100 */

int b = 13; /* 13 = 0000 1101 */

int c = a ^ b; /* 49 = 0011 0001 */

按位取反(NOT) - ~

对数的二进制表示进行取反操作。注意,它实际上是对每一位进行取反,并可能改变数的符号(因为它包括符号位)。

int a = 60; /* 假设int是32位,60 = 0000 0000 0000 0000 0011 1100 */

int b = ~a; /* -61 = 1111 1111 1111 1111 1100 0011 */

左移(Shift Left) - <<

将数的各二进制位全部左移若干位,由符号“<<”右边的数指定移动的位数,高位丢弃,低位补0。

int a = 60; /* 60 = 0011 1100 */

int b = a << 2; /* 240 = 1111 0000 */

右移(Shift Right) - >>

将数的各二进制位全部右移若干位,由符号“>>”右边的数指定移动的位数,对于正数,左边高位补0;对于负数,左边补1(即符号位)。

int a = 60; /* 60 = 0011 1100 */

int b = a >> 2; /* 15 = 0000 1111 */



int c = -60; /* 假设int是32位, -60 = 1111 1111 1111 1111 1100 0100 */

int d = c >> 2; /* -15 = 1111 1111 1111 1111 1111 1001 */

无符号右移(Unsigned Shift Right) - >>>

与右移(>>)类似,但无符号右移(>>>)在移动过程中,无论是正数还是负数,其左边总是补0。这个操作符在处理无符号整数或需要忽略符号位的情况时非常有用。

int a = -60; /* 假设int是32位, -60 的二进制表示为 1111 1111 1111 1111 1100 0100 */

int b = a >>> 2; /* 1073741816 = 0011 1111 1111 1111 1111 1100 0100(忽略高位补零)*/

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值