java字符串取反_Java字符串使用及运算符详解

字符串的连接

字符串可以与其他类型的变量通过操作符"+"进行连接,但要注意的是连接后的结果是一个字符串变量,下面来看能够怎样连接

String str = "hello ";

boolean kf = true;

String str1 = str + kf;

这是一种连接方式,将两个变量赋值给第三个字符串变量;其实还可以在输出语句中进行字符串连接

int num = 10;

System.out.println("My age is " + num);

26fb50ca71896cdf8bac37c889b2d294.png字符串变量连接需要注意的事情

在使用变量连接的时候需要注意变量的运算顺序,我们来通过举例来了解相关知识

int num1 = 10;

int num2 = 20;

String str1 = " hello ";

String str2 = num1 + str1 + num2;

System.out.println(str2);

int num1 = 10;

int num2 = 20;

String str1 = " hello ";

String str2 = num1 + num2 + str1;

System.out.println(str2);

我们来比较两个代码,第一个代码在连接的时候两个整型变量中间穿插了String类型变量;第二个代码String变量是在num1和num2之后;那么的出来的结果会是怎样的呢?

第一个代码结果 >> 10 hello 20

第二个代码结果 >> 30 hello

同样是连接字符串为什么会有这么大的差异呢?我们来分析代码的运算顺序就明白了。

第一个代码:num1首先和str1运算,所得到的的是一个String类型的结果,然后再和num2进行连接

第二个代码:num1和num2进行运算,二则所得到的结果是一个整型值,最后才和str1连接;

由此我们可以得到结论:在进行字符串连接的时候,影响结果的是操作符"+",当两边是其中一个变量是String类型的时候,二者就是连接的关系,所得到的结果就是String类型的;

字符串与其他类型变量的转换

Java是强类型的编程语言,许多隐式转换都不支持,但是还有方法将字符串转换成其他类型的变量,接下来介绍一种比较简单而且常用的方法;

String str = "10";

System.out.println(Integer.parseInt(str));

System.out.println(Long.parseLong(str));

System.out.println(Short.parseShort(str));

System.out.println(Byte.parseByte(str));

String str1 = "10.5";

System.out.println(Double.parseDouble(str1));

System.out.println(Float.parseFloat(str1));

使用Integer。parseInt()就可以将字符串转化为整数类型的了。但是要注意所转化的字符串,其字面量一定要是在所转化类型的数值范围才可以,否则就会运行出错,比如将str1转化为浮点数类型就会报错,就更不要说将有字符的字面量转化为费字符的形式了。

运算符

算术运算符

+ - * \/ %这些都是算术运算符,这些不管是在哪个编程语言中都会出现并且大家都耳熟于心的东西便不再过多赘述,但还是有几点要注意。

1、0不可以作为除数,这和数学有异曲同工之妙

2、一个负数%整数得到的也是一个负数

int num1 = -13;

int ret = num1 % 7;

System.out.println(ret);

-6

3、在C语言中%只能对整型使用,而在Java中%不仅可以对整型数值使用还可以对小数使用

double num1 = 6.5;

double ret = num1 % 1.5;

System.out.println(ret);

0.5

关系运算符

关系运算符常见的有> 、=、 <=、 ==

关系运算符需要注意的是所得到的结果是一个boolean类型,非true即false;

逻辑运算符

逻辑运算符有&&、||、!、&、 |

&&是逻辑与运算符——其特点的是同真则真,一假则假;

使用格式:

表达式 && 表达式;

int a = 5;

int b = 7;

System.out.println(a == b && a >b);

false

||是逻辑或运算符——其特点是同假则假,一真则真;

使用格式:

表达式 || 表达式;

int a = 5;

int b = 7;

System.out.println(a == b || a < b);

true

!是取非运算符——真变假,假变真;

使用格式:

!表达式;

int a = 5;

int b = 7;

System.out.println(!(a==b));

true

&是比较特殊的,它既可以表示逻辑与有可以表示位与符,它的结果取决于两边是什么类型的字面量,当两边都是boolean时返回的就是boolean结果;两边是int类型的时候就是int类型;

位与符特点:将整型数值转化为二进制数按位相与,同1为1,同0为0;

int a = 5;

int b = 7;

System.out.println(a == b & a > b);

System.out.println(a & b);

//0000 0000 0000 0000 0000 0000 0000 0101 a 5

//0000 0000 0000 0000 0000 0000 0000 0111 b 7

//0000 0000 0000 0000 0000 0000 0000 0101 5

false

5

|可以表示逻辑或和按位或,它与&相似;

其按位或特点——同0为0,一1为1;

int a = 5;

int b = 7;

System.out.println(a == b | a < b);

System.out.println(a | b);

//0000 0000 0000 0000 0000 0000 0000 0101 a 5

//0000 0000 0000 0000 0000 0000 0000 0111 b 7

//0000 0000 0000 0000 0000 0000 0000 0111 7

true

7

注意:&&和||会有短路求值的陷阱

1、当&&左边表达式为为假的时候,右边表达式不会再计算,因为&&一假为假,系统会认为右边表达式没有必要在进行运算;

2、当||左边表达式为真时,右边表达式不会再计算,其原因与上述一样;

移位运算符

<< :左移运算符,二进制数最左侧去掉,最右侧补0,其作用相当于*2;

\>>:算术右移,最右侧位不要了,最左侧补符号位,相当于/2;

\>>>:逻辑右移最右侧的位不要了,最左侧补0;

位运算符

~按位取反,针对整数;

^按位异或,两个比特位相同结果为0;相异为1;

这里重点介绍一下^,它有时候会让你有不同意想不到的效果;

举例:请不创建临时变量交换两个数的值

int a = 5;

int b = 7;

a = a ^ b;

b = a ^ b;

a = a ^ b;

System.out.println(a + "\n" + b);

// 0101 a 5

// 0111 b 7

// a = a ^ b; // 0010 赋值后的a

// // 0111 b

//b = a ^ b; // 0101 赋值后的b 5

// 0010 a

// 0101

//a = a ^ b; // 0111 赋值后的a

7

5

运算符优先级问题

运算符之间是有优先级的,具体的规则我们不必记忆;

解决的方法有两个:

1、不要写太过于复杂的表达式

2、当出现存在歧义的表达式的时候加上括号确定优先级即可;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值