JavaSE基础语法2
文章目录
运算符
算术运算符
+:加法运算 数值+数值 数值+字符
连接 字符串+字符串 字符串+数值
-:减法运算
*:乘法运算
/:除法运算
%:取余
++:自增
–:自减
单独的++ --,++x x++没有区别;
在混合运算中,++在前先自增后运算,++在后先运算后自增。
public class Demo1 {
public static void main(String[] args) {
int x=5;
int y= ++x +1;//++在前先自增后运算
System.out.println(x);//6
System.out.println(y);//7
}
}
public class Demo2 {
public static void main(String[] args) {
int x=5;
int y= x++ +1;//++在后先运算后自增
System.out.println(x);//6
System.out.println(y);//6
}
}
关系(比较)运算符
< ,>,<=,>=只能进行数值之间的比较;
==,!=能进行数值之间的比较,还可以进行逻辑值与逻辑值之间的比较、引用类型之间的比较。
逻辑运算符
进行逻辑值与逻辑值之间的运算。
& (逻辑与):所有表达式为true,结果为true;出现第一个false,继续执行后面的表达式,结果为false。
&&(短路与):所有表达式为true,结果为true;出现第一个false,整个表达式短路,结果为false。
|(逻辑或):表达式中有一个为true,结果为true;出现第一个true,继续执行后面的表达式,结果为true。
||(短路与):表达式中有一个为true,结果为true;出现第一个true,整个表达式短路,结果为true。
!=(逻辑非)
^(异或):相同为false,不同为true。
赋值运算符
=:把右边的值赋给左边。
数据类型 变量 = 值; (注意数据类型,注意区分= ,==的区别)
+=,-=,*=,/=,%= 赋值运算(会隐式的数据类型转换)
public static void main(String[] args) {
short s = 3;
s=s+2; //报错,s+2上升为int类型
s+=2; //隐式类型转换 s=(short)(s+2)
}
条件运算符
语法:
(条件表达式)? 表达式1:表达式2;
条件表达式结果为true执行表达式1; 为false执行表达式2
位运算
bit位进行运算。
public static void main(String[] args) {
int a=10;
System.out.println(a<<1); // <<:二进制bit位向左移位
System.out.println(a>>1); // >>:二进制bit位向右移位
System.out.println(a<<1); // >>>:二进制bit位向右移位,无符号右移(注意负数,移位后把默认补0)
}
&:二进制bit位&运算,只有1&1时结果是1,否则是0。
|:二进制位进行 | 运算,只有0 | 0时结果是0,否则是1。
^:相同结果是0;不相同结果是1。
~:正数取反,各二进制码按补码各位取反;负数取反,各二进制码按补码各位取反。
控制台输入
仅在javaSE测试程序时使用;
向程序中输入数据,java提供了一个类Scanner。
import java.util.Scanner;//导入java核心类库中的Scanner
/*通过类去创建一个对象(具体的可以使用的,对象在内存中存储)*/
public class ScannerDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);//System.in获得输入流对象
System.out.println("请输入年龄");
String name = scanner.next();//读入的内容是一个字符串,程序执行到此的时候,会等待控制台输入,按回车键表示输入完成,继续向下运行
System.out.println("年龄是"+name);
}
}
流程控制语句
条件语句
if选择语句
多路分支选择,条件更灵活。
if(条件表达式){条件表达式为真执行的代码块}
if(条件表达式){条件表达式为真执行的代码块} else{条件表达式为假执行的代码块}
if(条件表达式1){} else if(条件表达式2){} else if(条件表达式n){} else{}
不建议if else语句省略{},省略后,if else只对紧跟的那一行代码有效;
if else语句满足一个条件,流程自动结束。
public class IFDemo {
public static void main(String[] args) {
int w = 3;
if(w==1){
System.out.println("星期一");
}
else if(w==2){
System.out.println("星期二");
}
else if(w==3){
System.out.println("星期三");
}
else if(w==3){
System.out.println("星期三");//满足一个条件,流程自动结束,故只输出一个星期三
}
else{
System.out.println("无效日起");
}
}
}
switch语句
多路分支选择,适用于一些固定选项的选择,在固定选项执行中,效率高。
switch(表达式){
case 值1:代码块;[break];
case 值2:代码块;[break];
case 值n:代码块;[break];
default:默认代码块;
}
表达式值类型:byte,short,int,char,枚举,String;
值1,值2,…,值n:必须是字面量(常量),值不能重复;
匹配的case语句块执行完成后,如果没有break语句结束,则继续执行下一个case,直到遇到break;
如果没有表达式匹配的的选项,则执行default语句;
没有default则结束switch语句;
switch语句可以实现的,if语句都可以实现,反之则不行。
循环语句
满足某种条件,一直重复做某件事情。
循环语法格式:
循环变量初始化,进入循环条件,循环体(循环中要执行的代码),循环变量的更新
循环方式:
while(进入循环的条件){ //while先条件判断,不成立就不能进入循环
循环体;
}
do{ //先执行,后判断,即使条件不成立,也会执行一次
循环体;
}while(循环条件);
for(变量初始化;条件;更新变量){ //变量初始化执行一次
循环体;
}
break和continue
break:终止循环,只能终止当前所在的那层循环;
continue:跳过某一次循环
/*在内层循环中,结束外层循环*/
outer:for(int i=1;i<=4;i++){ //为循环定义一个标记
for(int j=1;j<=5;j++){
if(j==3){
break outer;
}
System.out.print("*");
}
System.out.println();
}
方法
方法:类似于c语言中的函数,解决某一个问题,而编写的代码组合;
属于类或对象。
main方法:是java程序的入口,启动java的主线程。
public static void main(String[] args) {}
static修饰方法属于类,可以直接通过类名调用;不加static修饰,方法属于对象,需要通过对象调用。
语法格式:
[访问权限修饰符 修饰符] [返回值类型] 方法名(形式参数类型 参数名){
代码块;
[return 返回值;]
}
public class Run {
public static void main(String[] args) {
MethodDemo.multi();//类名只能调用static修饰的方法
//创建MethodDemo类的一个对象(具体的一个实际存在的实例)
MethodDemo m = new MethodDemo();
m.print(5);
}
}
方法如果有返回值,必须声明返回值的类型;
return后面没有值的时候,只表示方法终止,不表示方法没有返回值。