目录
一、String数据类型
1、如何声明String数据类型变量
String str = " ";
2、String类型数据变量运算
String类型变量可以和8种数据类型变量做链接运算,运算结果仍然是String类型。
String str= "学号:";
int num = 20;
String con = str+num;
System.out.print(con);
System.out.println();
boolean b1 = true;
String con1 = con+b1;
System.out.print(con1);
输出为:
//练习1
char c = 'a';
int i = 10;
String string = "hello";
System.out.println(c+i+string);//a式
System.out.println(c+string+i);//b式
System.out.println(c+(i+string));//c式
System.out.println((c+i)+string);//d式
System.out.println(string+i+c);//e式
括号优先计算。
a,d式:char类型和int类型运算时转成int类型,而a的ASCII码为97,所以最后输出为107hello。
b、c、e式:String类型变量做连接运算。
//练习2
System.out.println("* *");
System.out.println('*'+'\t'+'*');//a式
System.out.println('*'+"\t"+'*');//b式
System.out.println('*'+'\t'+"*");//c式
System.out.println('*'+('\t'+"*"));//d式
a,c式:char和char做运算时会转成int类型。
二、进制数(了解)
1、如何定义不同进制数
八进制:以数字0开头
int i = 0127;
二进制:以0b或者0B开头
int i = ob110;
十六进制:以0x或者0X开头
int i = 0x110A;
三、运算符
1、运算符的分类
a.算术运算符
"/"除号:
int num1 = 5;
int num2 = 3;
int result = num1/num2;
System.out.print(result);
输出为整数,因为,result、num1和num2都是整型,所以最后答案也是整型。
就算将result改成double型也是1.0。
若将result改成 double result1 = num1/(num2+0.0);或者double result1 = double num1/num2;则可以输出全部的结果。
"%"取模:结果符号与被取模数相同,经常被用来判断能否被除尽。
int m = -12;
int n = 5;
int result = m%n;
System.out.print(result);
结果: (m和n都为负数时,结果也是负数)
"++":自增(前后)
int a1 = 10;
int b1 = ++a1;
System.out.println("a1="+a1+" b1="+b1);
int a2 = 10;
int b2 = a2++;
System.out.println("a2="+a2+" b2="+b2);
结果:
++ 在前,先自增后运算。++在后,先用再自增。
"--"同理。
练习:求出任意一个三位整数的个位十位百位
import java.util.Scanner;
/*练习:给出任意一个三位数求这个数的个位十位百位
*
*/
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int ge = num%10;
int shi = num/10%10;
int bai = num/100;
System.out.println("个位为:"+ge);
System.out.println("十位为:"+shi);
System.out.println("百位为:"+bai);
}
}
输出结果
b、赋值运算符
常见的有:= ,+=,-=,/=,%=,*=
+=:int num = 2; num += 2;//num +=2;相当于num = num+2;
System.out.print(num);结果为4。
后面的同理。
区别:short s = 2; s = s+2;//编译失败 s += 2;//不会改变变量本身的数据类型
c、比较运算符
比较运算符都是boolean类型的 ,只有两种取值,true和false。
==不能写成=。
d、逻辑运算符
异或:a,b相同时为false,不同时为true。
"&" 和"&&"的区别
boolean b1 = false;
int num1 = 10;
if (b1&(num1++ > 0)) {
System.out.println("yes");
}else {
System.out.println("no");
}
System.out.println("num1 = "+num1);
boolean b2 = false;
int num2 = 10;
if (b2&&(num2++ > 0)) {
System.out.println("yes");
}else {
System.out.println("no");
}
System.out.println("num2 = "+num2);
&&为短路与,当前一个为false时将不会判断下一个,直接输出结果为false。
所以,num2不会++。
“ | ”和“ || ”同理。
e、位运算符
位运算是直接对整数的二进制进行的运算。
<<:相当于*2
>>:相当于/2
d、三元运算符
格式:(条件表达式)?表达式1:表达式2;
当条件表达式为true时,执行表达式1。
当条件表达式为false时,执行表达式2。(表达式1和表达式2要为同类型)
三元表达式和if-else语句的联系和区别
1、三元表达式可以简化if-else语句。
2、三元表达式必须要有返回值。
3、if后代码块可以有多个语句。
练习1:比较两个数并选出最大的数。
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
int m = 12;
int n = 5;
int max = (m>n)?m:n;
System.out.println(max);
}
}
练习2:比较十个数选出最大值
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
int m = 12;
int n = 5;
int x = 78;
int max1 = (m>n)?m:n;
int max2 = (max1>x)?max1:x;
System.out.println(max2);
}
}
可以用三元运算写的都可以改成if-else语句。
例如练习1:
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
int m = 12;
int n = 5;
int max = 0;
if (m>=n) {
max = m;
}else {
max = n;
}
System.out.println(max);
}
}
2、运算符的优先级
只有单目运算符(单目运算符是指运算所需变量为一个的运算符) 、三元运算符和赋值运算符是从右到左运算的。
四、三种基本流程结构
1、顺序结构
程序从上到下顺序执行,时间没有任何判断和跳转。
2、分支结构
if-else语句三种结构
a. if(conditions){
执行代码块;
}
b. if(conditions){
执行代码块;
}else{
执行代码块;
}
c. if(conditions){
执行代码块;
}else if(conditions){
执行代码块;
}else{
执行代码块;
}
学不动了,下次再来。