Java运算符
1.概述
运算符是用于连接表达式的操作数,并且对操作数进行运算。
主要运算符:
1.1 算术运算符
运算符 | 写法 | 作用 |
---|---|---|
+、-、*、/ | 基本四则运算符 | |
% | 模,即取余数,如5/2余1 | |
算术运算符 | ++ | 自增 |
– | 自减 |
/*本类用于测试取余和自增自减运算符*/
public class TestOperator {
public static void main(String[] args) {
/* + - * / 基本运算符*/
System.out.println(25/10); //int/int结果为int
System.out.println(25%10); //%为取余数
System.out.println("=======================");
//求两位数的十位与个位
int x = 59;
System.out.println(59/10); //取十位
System.out.println(59%10); //取个位
System.out.println("=======================");
//求三位数的百位、十位、个位
int y = 123;
System.out.println(123/100); //取百位
System.out.println(123/10%10); //取十位
System.out.println(123%100%10); //取个位
System.out.println("=======================");
/*测试自增自减运算符*/
/*前缀式:符号在前,++a、--a,表示自身先运算(+1或-1)后再赋值
* 后缀式:符号在后,a++、a--,表示先去赋值后自身再运算(+1或-1)
* */
int a = 1;
System.out.println(a++); //结果:1 a先打印输出后a自身再+1
System.out.println(a); //结果为2
System.out.println("=======================");
int b = 1;
System.out.println(++b); //结果:2 b先自增后结果为2
System.out.println(b); //结果为2
System.out.println("=======================");
int c = 1;
System.out.println(c--);
System.out.println(c);
System.out.println("=======================");
/*
* System.out.println(--c-c-c--); System.out.println(c);
* System.out.println("=======================");
*/
System.out.println(--c-c-(--c));
System.out.println(c);
}
}
自增和自减运算符
例:a++/a-- 表示a先赋值后本身再运算(本身+1/本身-1)
--a/++a 表示a本身(本身-1/本身+1)先运算后再赋值
1.2 逻辑运算符
运算符 | 写法 | 作用 |
---|---|---|
& | 逻辑与,两边同真时为真,其余为假 | |
&& | 短路与,与逻辑与原理相同,但只要有一边为false则结束,结果为false | |
逻辑运算符 | | | 逻辑或,两边同假时为假,其余为真 |
|| | 短路或,原理与逻辑或相同,但只要有一边为true则结束,结果为true | |
! | 非,非真即假,非假即真 | |
+ | 字符串连接符 |
1.3 比较运算符
运算符 | 写法 | 作用 |
---|---|---|
> , <, >=, <= | 基本比较运算符 | |
比较运算符 | == | 等于,如1==1 |
!= | 不等于 如1!=0 |
1.4 三目运算符
运算符 | 写法 | 作用 |
---|---|---|
三目运算符 | X?Y:Z | 当X为true时,返回结果为Y,否则返回结果为Z |
import java.util.Scanner;
/*需求:接收用户输入的三个整数,比较并输出两者间的最大值*/
/**三目运算符 1?2:3 */
public class TestMaxNum {
public static void main(String[] args) {
System.out.println("输入要比较的第一个数a:");
int a = new Scanner(System.in).nextInt();
System.out.println("输入要比较的第二个数b:");
int b = new Scanner(System.in).nextInt();
System.out.println("输入要比较的第三个数c:");
int c = new Scanner(System.in).nextInt();
/*定义一个变量用来保存最大值*/
int max = a>b?(a>c?a:c):(b>c?b:c);
System.out.println("三个数比较后的最大值为:"+max);
}
}
优先级一般用括号来决定。
package cn.tedu.abasic;
import java.util.Scanner;
/*需求:接收用户输入的年份,判断是平年还是闰年
* 四年一闰,百年不闰年,四百年又闰
* 如果是闰年,需满足以下两个条件之一
* 1.能被4整除,但不能被100整除,比如1900年就是一个平年
* 2.能被400整除,比如2000年就是一个闰年
* */
public class TestYear {
public static void main(String[] args) {
System.out.println("输入您要判断的年份:");
int year = new Scanner(System.in).nextInt();
//定义一个变量来保存最终结果
String result = "平年";
//判断平年还是闰年
//if(判断语句)(符合判断条件后才执行后面的代码)
if(year % 4 == 0) { //判断能被4整除
if(year % 100 != 0) { //判断不能被100整除
result = "闰年";
} //两个if嵌套,需要同时满足其中的条件才会往下运行,可看作逻辑&
}
if(year % 400 == 0) {
result = "闰年";
}
System.out.println(year+"年是"+result);
}
}
Java方法 局部变量 成员变量
1.方法定义的格式
方法的修饰符 方法的返回值 方法名(参数列表){方法体}
package cn.tedu.basic;
/*本类用于测试方法的特性*/
public class TestMethod {
public static void main(String[] args) {
/*通过方法名+参数列表来确定具体调用哪个方法*/
System.out.println(45);
method1();
System.out.println(97);
System.out.println("=================");
method2(10);
System.out.println("=================");
int result= method3(1,2); /**把返回值返回到调用位置*/
System.out.println(result);
System.out.println(result+10);
}
//本方法用于测试方法的返回值,如果方法有返回值,可以设置返回值类型
//若设置了返回值类型,必须在方法里使用return关键字返回对应类型的结果
private static int method3(int i, int j) {
System.out.println(i+j);
return i+j;
}
//本方法用于测试方法的参数,参数的位置在方法名后的小括号中
//格式:(参数类型 参数名),只有方法定义了参数,调用方法时才能传参数
private static void method2(int a) {
System.out.println(a*a);
}
//创建自定义方法
/*方法定义的格式:方法的修饰符 方法的返回值类型 方法名(方法的参数)(方法体)*/
public static void method1() {
System.out.println(5);
System.out.println(6);
System.out.println(7);
}
}
2.方法的重载
方法的重载是指在一个类中定义多个同名的方法,但是每个方法的参数列表不同,即参数的个数和类型不同,
程序在调用方法时,可以通过传递给他们的不同个数和类型的参数来决定具体调用哪个方法。
package cn.tedu.basic;
/*本类用于测试方法的重载*/
public class TestMethodOverload {
public static void main(String[] args) {
/**1.我们根据 方法名+参数列表 来确定具体调用哪个方法
* 2.方法的重载:
* 在同一个类中,存在多个名字相同,但参数列表不同的方法
* f(String a , int b) f(String b, int a)------不构成重载
* f(String a , int b) f(int a, String b)------构成重载
* 如果在一个类中存在多个同名方法,方法的参数个数不同,一定构成重载
* 如果一个类中存在多个同名方法,方法的参数个数相同
* 我们需要查看对应位置上的参数类型,与参数名无关
*注意: 方法的重载看的是参数的类型,与参数名字无关
* */
f();
f(666);
f("皮皮霞",3);
}
private static void f(String s, int i) {
System.out.println(s+"吃"+i+"碗饭");
}
//创建一个f(int),含有一个int类型参数的f方法
private static void f(int i) {
System.out.println(666);
}
//创建一个无参的f()方法
private static void f() {
System.out.println("无参数");
}
}
变量
1.概述
变量:即可以改变的量
定义变量的格式:变量类型 变量名 = 变量值
int a = 10; //定义一个int类型的变量a
float = 5.5F; //定义一个float类型的变量
package cn.tedu.abasic;
/*本类用于测试各种类型默认值*/
public class TestVariable {
//类里方法外的变量称为成员变量,可以不初始化(赋值)
static String name; //引用类型默认值为null
static byte a;
static short b;
static int c; //整数类型的默认值为0
static long d;
static float e; //浮点型数据类型默认值为0.0
static double f;
static char g; //char类型的默认值是'\u0000',显示出来是空格
static boolean h; //布尔类型默认值为false
public static void main(String[] args) {
System.out.println(name);
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(e);
System.out.println(f);
System.out.println(g);
System.out.println(h);
}
}
变量可分为局部变量和成员变量。
2.局部变量
定义位置:定义在方法里或者局部代码块中。
注意:局部变量必需要手动初始化(即赋值)如:int i = 5;。
范围:在方法里或者局部代码块中,方法运行完内存就释放了。
3.成员变量
定义位置:定义在类里面,方法的外面。
注意:无需初始化,也会自动定义为默认值 ;一般整数类型默认值为0;浮点数类型默认值为0.0;char字符类型默认值为‘\u0000’;boolean布尔类型默认值为false;String字符串默认值为null。
作用范围:整个类当中,类消失了,,变量才会释放。
package cn.tedu.abasic;
/*本类用于测试成员变量和局部变量*/
public class TestVariable2 {
//定义成员变量
//1.位置:类里方法外
//2.使用时可以不初始化(赋值),会自动赋予对应类型的默认值
//3.作用范围:整个类中都生效,类消失,成员变量才会消失
static int sum;
static int a;
public static void main(String[] args) {
//定义局部变量
/*1.位置:在方法里或者局部代码块中
* 2.使用时,局部变量必须手动初始化(手动赋值)
* 3.作用范围:在方法里,方法结束,局部变量释放
* 变量有一条使用规则:就近原则
* */
int sum = 100;
System.out.println(sum);
System.out.println(a);
}
}