操作符 | 描述 | 例子 |
---|---|---|
+ | 加法 - 相加运算符两侧的值 | 10 + 20 等于 30 |
- | 减法 - 左操作数减去右操作数 | 10 – 20 等于 -10 |
* | 乘法 - 相乘操作符两侧的值 | 10 * 20等于200 |
/ | 除法 - 左操作数除以右操作数 | 20 / 10等于2 |
% | 取余 - 左操作数除以右操作数的余数 | 20 / 20%10等于0 |
System.out.println( 100 + 20 );//120
System.out.println( 100 - 20 );//80
System.out.println( 100 * 20 );//2000
System.out.println( 100 / 20 );//5
System.out.println( 10 / 3 );//3
System.out.println( 5 / 2 );//2
//取余(%):获取前者除以后者剩下的余数
System.out.println( 100 % 20 );//0
System.out.println( 20 % 3 );//2,商是6,余数是2
System.out.println( 50 % 7 );//1
%的用法: 用于判断一个数是奇数还是偶数
整数值 % 2 结果为零, 则这个数一定是偶数
整数值 % 2 结果是1, 则这个数一定是奇数
操作符 | 描述 | 例子 |
---|---|---|
== | 如果两个操作数的值是否相等,如果相等则条件为真。 | (10 == 20)为假。 |
!= | 如果两个操作数的值是否相等,如果值不相等则条件为真。 | (10 != 20) 为真。 |
> | 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 | (10> 20)为假。 |
< | 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 | (10 <20)为真。 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 | (10> = 20)为假。 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 | (10 <= 20)为真。 |
int a = 3;
int b = 4;
System.out.println( a*b == b*a ); //true(真)
System.out.println( a*b != b*a ); //false(假)
System.out.println( a > b ); //false(假)
System.out.println( a+1 >= b ); //true(真)
System.out.println( a+1 <= b ); //true(真)
&& 一假必假 || 一真必真 短路规则
&和|和&&和||都是一样的,只不过后者具有短路能力
int a = 50;
int b = 40;
int c = 30;
System.out.println( a>b && b>c ); //true
System.out.println( a>b && b<c ); //false
System.out.println( a>b || b<c ); //true
System.out.println( a>b || b>c ); //true
System.out.println( a<b || b<c ); //false
!:对当前的结果取反,true取反就是false,false取反就是true
System.out.println( a>b && !(b<c) ); //true
System.out.println( !(a<b) || b<c ); //true
操作符 | 描述 | 例子 |
---|---|---|
++ | 自增: 操作数的值增加1 | 20++ 或 ++20 等于 21 |
– | 自减: 操作数的值减少1 | 20-- 或 --20 等于 19 |
++: 在当前值的基础上自增1(加1)
int i = 5;
i++: 先使用(访问)i的值,再给i加1
++i: 先给i加1,再使用(访问i)的值
–: 在当前值的基础上自减1(减1)
i–: 和i++相同
–i: 和++i相同
int i = 5;
System.out.println( i++ ); //5
System.out.println( i ); //6
System.out.println( "--------------");
i = 5;
System.out.println( ++i ); //6
System.out.println( "--------------");
i = 5;
i++;
System.out.println( i ); //6
System.out.println( "--------------");
i = 5;
i = i++ + i++;
System.out.println( i ); //11
System.out.println( "--------------");
i = 5;
i = ++i + ++i;
System.out.println( i ); //13
System.out.println( "--------------");
然后注意:
前缀自增自减法(++a, - -a): 先进行自增或者自减运算,再进行表达式运算。
后缀自增自减法(a++,a–): 先进行表达式运算,再进行自增或者自减运算.
package com.tedu.a;
public class Testa {
public static void main(String[] args) {
int a = 5;//定义一个变量;
int b = 5;
int x = 2*++a;
int y = 2*b++;
System.out.println("自增运算符前缀运算后a="+a+",x="+x);
System.out.println("自增运算符后缀运算后b="+b+",y="+y);
}
}
package cn.tedu.basic;
//这个类用来测试自增自减
public class Test5_Yunsuanfu {
public static void main(String[] args) {
//符号在前,先变化再使用
//符号在后,先使用再变化
int a = 1;
System.out.println(a++);
int b = 1;
System.out.println(++b);
System.out.println(++a+a+b++);//3+3+2
int c = 1;
System.out.println(c--);
int d = 1;
System.out.println(--d);
System.out.println(--c-c-c--);//-1-(-1)-(-1)
}
}
格式 | 描述 | 例子 |
---|---|---|
布尔表达式 ? 表达式1 : 表达式2 | 如果表达式结果是true,则返回值1,否则返回值2 | 3>1 ? 3 : 1结果为3 |
int x = 7;
int y = 9;
int z = x>y ? x : y; //x>y是true,返回x,x>y是false,则返回y;
System.out.println( z ); //9
x = 123;
y = 456;
String str = x*y > 56000 ? "YES" : "No";
System.out.println( str );
练习:两个数的最大值
package cn.tedu.basic;
import java.util.Scanner;
//这个类用来获取两个数中的大值
public class Test6_Max {
public static void main(String[] args) {
//1、接收键盘输入的两个整数
int a = new Scanner(System.in).nextInt();
int b = new Scanner(System.in).nextInt();
//2、比较,用三元运算符比较 1 ? 2 : 3
int max = a > b ? a : b;
System.out.println(max);
}
}
格式 | 描述 | 例子 |
---|---|---|
+= | 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 | C + = A等价于C = C + A |
-= | 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 | C - = A等价于C = C - A |
*= | 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 | C * = A等价于C = C * A |
/= | 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 | C/=A,C与A同类型时等价于C=C/A |
int x = 10;
x += 5; //和 x=x+5 效果相同
System.out.println( x ); //15
x = 10;
x -= 5; //和 x=x-5 效果相同
System.out.println( x ); //5
x = 10;
x *= 5; //和 x=x*5 效果相同
System.out.println( x ); //50
x = 10;
x /= 5; //和 x=x/5 效果相同
System.out.println( x ); //2
x = 10;
x %= 3; //和 x=x%3 效果相同
System.out.println( x ); //1
加号可以做加法运算(要求两边都得是数值),也可以做为拼接符使用(只要两边有一个是字符串)
//1.加号两边都是数值,加号会执行加法运算(注意:char类型底层也是数值,范围是0~65535)
System.out.println( 10+5 ); //15
System.out.println( 'A'+1 );//65+1=66
System.out.println( 'a'+1 );//97+1=98
System.out.println( '中'-0 );//20013+1=20024
System.out.println( '国'+1 );//22269+1=22270
//2.加号可以做拼接符,将任意数据和字符串拼接,加号两边只要有一个是字符串,加号就会作为拼接符使用
-----------------------------------------------
String name = "张三";
String age = "28";
System.out.println( name+","+age );
System.out.println( "HelloWorld"+10+20+30 );//
System.out.println( "HelloWorld"+(10+20+30) );//
判断下面的输出结果
System.out.println( "a"+1+2+3 );//
System.out.println( 1+"a"+2+3 );//
System.out.println( 1+2+"a"+3 );//
System.out.println( 1+2+3+"a" );//
System.out.println( 1+2+3+'a' );//
牛郎织女星相距:16.4 光年
光速:299792458 米/秒
喜鹊身长:0.46 米
牛郎织女相会,需要多少只喜鹊?
提示:
1)先计算1光年的距离是多少米(注意整数溢出问题)
2)再计算16.4光年的距离是多少米
3)用牛郎织女之间的距离,除以每只喜鹊的长度,就是喜鹊的数量
public static void main(String[] args) {
//声明一个变量, 保存一秒光的距离
int light = 299792458; //秒
//再声明变量,保存喜鹊的身长
double height = 0.46; //米
//声明变量保存牛郎织女星之间的距离
double distance = 16.4; //光年
//先计算1光年的距离是多少米(注意整数溢出的问题)
double lightYear = light * 60L * 60 * 24 * 365;
//再计算16.4光年的距离是多少米
double distance2 = distance * lightYear;
//再用牛郎织女之间的距离, 除以每只喜鹊的长度, 就是喜鹊的数量
System.out.println( distance2 / height );
//System.out.println( 299792458L*60*60*24*365*16.4/0.46);
}
引用数据类型包括类、接口、数组类型。
数组会在之后的两天内进行讲解,而类和接口会在面向对象部分进行详细讲解!
后面会讲解类、接口以及数组类型,这里先简单的介绍一个类 —— String 类。通过String类可以定义一个字符串。所谓的字符串就是指一连串的字符,即字符串是由若干个字符连接而成的串。字符串中可以包含任意个字符,无论是0个、1个还是多个字符,这些字符必须包含在一对双引号("")之内
"" //空字符串
" " //由空格组成的字符串
"a" //由a组成的字符串
"abc" //由abc组成的字符串
"123abc" //由123abc组成的字符串
"HelloWorld" //由HelloWorld组成的字符串
字符串可以直接使用:
System.out.println( "abc"+10+10 ); //abc1010
也可以先声明再使用:
String name = "张飞";
String age = "30";
String addr = "北京";
System.out.println( name+","+age+","+addr );
为String类型的变量赋值可以通过以下两种方式:
1)方式一:即上面用到的字符串字面量形式 为 字符串变量赋值
String name2 = "张飞";
2)方式二:使用new对象的形式 为 字符串变量赋值
String name3 = new String("张飞");