byte short int long float double char(2字节,虽然是字符,但实际是unicode编码的一个十进制整数,可以把它当做整数对待
Boolean不能和其他类型进行转换(它只有true/false)
转换规则:不看字面量,看数据类型容量。
默认转换:byte,char,short默认转换为int,int默认转换为long ,long默认转换为float,float默认转换为double。
byte 1字节;short 2字节;int 4字节;long 8字节。
容量小转容量大:可以直接转换
double>float>long>int>byte=char=short
强制转换:
float是4字节,但由于小数的二进制存储结构与整数的二进制存储不同
所以,float大于int
byte
+:1.加法运算 (字符也可以参与运算) 数值加数值(char)
2.字符串的连接 数值+字符串=字符串 字符串+字符串=字符串
3.表示正数。
-数值-数值(char)
*乘积数值乘数值(char)
/数值/数值(char)
%取余数:数值%数值(char)
++自加一,注意运算顺序,是++m还是m++, ++m是先加一 再运算,m++是先运算再加一
–自减一
>,<,>=,<=,==,!=
用于数值(char)之间进行大小比较
== !=还可以使用引用类型之间的比较
String s1="abc";
String s2="abc";
System.out.println(a==b);//false
System.out.println(a!=b);//true
注意左右俩边的数据类型是否一致,不一致报错。
=,+=,-=,*=,/=
把右边字面量赋给左边的变量,注意赋值/时声明的数据类型相匹配
+=可以隐式的进行数据类型转换
s=s+2// s=s+2;s为short类型,3为int类型,类型不匹配,会报错
& 逻辑与(所有的表达式都返回true,结果为true,有一个false,结果都是false)
&& 逻辑与(短路与)<当第一个表达式为false,下一个表达式不执行>
| 逻辑或(所有的表达式都返回false,结果为false,有一个true,结果都是true)
|| 逻辑或(短路或)<当第一个表达式为true,下一个表达式不执行>
! 逻辑非
int a = 10;
int b = 5;
int c =8;
System.out.println(!(a>b));//true-->false
^ 逻辑异或(结果相同为false,不同为true)
System.out.println(a<b^b>c);//false
(条件表达式)?表达式1:表达式2
先执行条件表达式,当条件表达式为true,运行表达式1
当条件表达式为false,运行表达式2
最终表达式1和表达式2必须返回一个结果
int score=80;
String result = (score>60)?"及格":"不及格"
System.out.println(result);
/*if(true){
}
else{
}*/
位运算:对数值的二进制进行运算
<< 左移,0100–>1000,左移一位,相当于乘2
.>>右移
.>>>无符号右移 无论正负都补零
& | ^如果左右俩边都是逻辑值,就是逻辑运算
如果不是,则为位运算。
&整数间二进制的与运算
int a=3;
int b=4;
System.out.println(a&b);
/*
0000 0011
+ 0000 0100
0000 0000
*/
| 整数间二进制的或运算
^整数间二进制的异或运算
分隔符,一元运算符,算数运算符;移位运算符,关系运算符,逻辑运算符,三目运算符,赋值运算符
流程控制语句
需求,程序应该根据输入的一些数据进行处理,语言中提供的一种方式,可以在控制台中输入,注意控制台中输入只是在前期我们向程序输入数据的一中方式,控制台输入将不再会使用。
在Java中,可以使用Scanner
类从控制台读取输入数据。以下是一个简单的示例:
import java.util.Scanner;
public class ConsoleInputExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个整数:");
int number = scanner.nextInt();
System.out.println("您输入的整数是:" + number);
System.out.print("请输入一个字符串:");
String text = scanner.next();
System.out.println("您输入的字符串是:" + text);
// 必要时,记得关闭Scanner对象
scanner.close();
}
}
在上面的示例中,我们首先创建了一个Scanner
对象,它用于读取输入。然后通过nextInt()
方法读取整数类型的输入,通过next()
方法读取字符串类型的输入。最后,我们输出读取到的输入数据。
注意,Scanner
类在读取输入时,遇到空格或换行符时会停止读取,默认情况下,next()
方法以空格作为输入的分隔符。如果需要读取包含空格的整行输入,可以使用nextLine()
方法。另外,记得在程序结束时关闭Scanner
对象,以释放资源。
要注意异常情况,例如当输入与预期类型不匹配时,会抛出InputMismatchException
异常。在实际使用时,建议对输入做一些错误处理,确保程序的健壮性。
Java中的流程控制是指通过条件语句和循环语句控制程序的执行流程。以下是Java中常用的流程控制语句:
条件语句:
循环语句:
跳转语句:
流程控制语句在Java中非常重要,它们可以根据条件和循环要求来灵活控制程序的执行流程,使程序具备更强大的逻辑控制能力。同时,使用流程控制可以提高程序的效率和可读性。
if
if…else
if…else if
if…else if…else if…else
switch:多分支选择语句,根据表达式的值,来执行多个操作中的一个,一般用于选择一些固定的选项:如一周有七天,一年有四季
与if语句比较类似,switch能实现的功能,if都能实现。反之不成。
表达式的值只能是byte,short,int,char,枚举,String
case语句只能使用常量表达式
case字面量的值不能重复
在case代码块中使用break语句终止流程,如果不添加,将会向下继续执行后面的case
/*
switch(表达式){
case 字面量值1:
case对应的代码块
[break];[]内的内容可写可不写
case 2:
case 2对应的代码块
……
default:
默认代码块
}
*/
循环语句-重复执行某些动作
for:已知循环次数,使用for循环
for(变量的定义,执行一次;进入循环的条件多次执行;变量的更新,多次执行){
循环体(多次执行)}
while
while(条件表达式){
循环体
}
do …while
break:终止循环,但是只能终止一层循环,break还可以在switch语句使用
continue:终止这次循环,跳过本次continue之后 的内容
在编程中,case穿透是指当在一个switch语句中的一个case分支执行完后,没有遇到break语句而继续执行下一个case分支的情况。换句话说,当一个case中的代码块执行完后,控制流会继续执行下一个case中的代码块,而无论下一个case的条件是否满足。
这种情况通常是由于程序员忘记在case后面添加break语句所导致的。在没有break语句的情况下,控制流会继续往下执行直到遇到一个break语句或者整个switch语句结束。这意味着后面的case语句都会被执行,不论它们的条件是否满足。
下面是一个简单的示例来解释case穿透:
int num = 2;
switch (num) {
case 1:\
num++;
// 没有break语句,会执行下一个case
case 2:
num=num*2;
// 这里没有break语句,所以控制流会继续往下执行
case 3:
num=0;
break; // 这里有一个break语句,结束switch语句的执行
}
上面的代码中,num的值是2。当控制流进入switch语句后,它会依次执行每个case中的代码块。在遇到case 2时,num=6,然后继续执行下一个case。在遇到case 3时,num=0,然后退出switch语句。
因此,由于缺少了break语句,case穿透导致了多个case的代码块被执行。在某些情况下,case穿透可能是有意为之的,但通常情况下,程序员需要小心避免它,以保证switch语句的预期行为。
家庭收支记账软件:
package day2;
import java.util.Scanner;
public class Demoo {
public static void main(String[] args) {
int money = 10000;
String info = "";//记录支出和收入
System.out.println("家庭收支记账软件");
while (true){
System.out.println("1.收支明细");
System.out.println("2.登记收入");
System.out.println("3.登记支出");
System.out.println("4.退出");
System.out.println("请选择1-4选项操作");
Scanner scanner =new Scanner(System.in);
int item = scanner.nextInt();
out:switch (item){//
case 1:
System.out.println(info);
break;
case 2:
System.out.println("请输入收入金额:");
int shouru = scanner.nextInt();
money += shouru;
System.out.println("输入收入说明:");
String desc = scanner.next();//
info +="收入:"+desc+ shouru +"\n";//将输出拼成一个字符串
break;
case 3:
System.out.println("请输入支出金额:");
int zhichu = scanner.nextInt();
money -= zhichu;
System.out.println("输入支出说明:");
String desc1 = scanner.next();
info +="支出:"+desc1+zhichu+"\n";
break;
case 4:
break out;
default:
System.out.println("输入选项有误");
}
}
}
}
for,while,do…while均可以作为外层循环和内层循环
for (int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
int k=i*j;
System.out.print( j+"*"+i+"="+k+" ");
}
System.out.println();
}