Java语言基础笔记

运算符和表达式

  • 运算符:对常量和变量进行操作的符号称为运算符

  • 运算符的要素:优先级和结合性

  • 表达式:用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式;不同运算符连接的式子体现的是不同类型的表达式

算数运算符

  • 类型
    在这里插入图片描述

  • 自增自减运算符
    如果++或者–在变量的后面,先拿变量参与操作,后变量做++或者–
    如果++或者–在变量的前面,先变量做++或者–,后拿变量参与操作

  • 字符和字符串参与加法运算

  1. 字符参与运算:其实是拿该字符对应的数值来操作
  2. 字符串参与运算:这里其实做的不是加法运算,而是字符串拼接。字符串和其他类型的数据做拼接,结果是字符串类型的。
  3. 例子
public class OperatorDemo2 {
	public static void main(String[] args) {
		//字符参与运算
		int a = 10;
		char ch = 'a';
		System.out.println(a + ch); // 输出107
		System.out.println("----------------");
		
		//字符串做加法
		System.out.println(10+20+"hello"); //输出30hello
	}
}

赋值运算符

  • 类型
    在这里插入图片描述
  • 注意:结合赋值运算符具有自动强制类型转换功能
  •   若x是一个int,x+=3.5等价于 x = (int) (x + 3.5)
    

关系运算符

  • 类型
    在这里插入图片描述
  • 注意:== 和 = 要区分开

逻辑运算符

  • 类型
    在这里插入图片描述
  • 注意
  1. 可用于连接关系表达式
  2. !:偶数个不改变本身
  3. &&,||:具有短路效果

三元运算符

如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2;

  •   格式:	数据类型 变量名 = (关系表达式)? 表达式1:表达式2;
    

位运算符

  • 位运算符:按位模式处理,可以使用掩码技术得到整数中的各个位
  • 类型:
    &(“and”)
    |(“or”)
    ^(“xor”)
    ~(“not”)
    >>(按位模式右移):用符号位填充最高位
    >>>(按位模式右移):用0填充最高位
    <<(按位模式左移):不存在<<<运算符

键盘录入

基本步骤

  1. 导包(位置放到class定义的上面)
  •   import java.util.Scanner;
    
  1. 创建对象
  •   Scanner sc = new Scanner(System.in);
    
  1. 接收数据
  •   int x = sc.nextInt();
    

案例

从控制台读取2个数然后将它们的和输出:

public class ScannerDemo {
	public static void main(String[] args) {
		//创建键盘录入对象
		Scanner sc = new Scanner(System.in);
		
		//给出提示
		System.out.println("请输入第一个整数:");
		int a = sc.nextInt();
		
		System.out.println("请输入第二个整数:");
		int b = sc.nextInt();
		
		//对数据求和
		int sum = a + b;
		
		//输出结果
		System.out.println("sum:"+sum);
	}
}

控制流程

顺序结构

是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的
在这里插入图片描述

选择结构

if语句

  1. 第一种格式:
  •   if (condition)statement
    

在这里插入图片描述
2. 第二种格式

  •   if (condition) statement1 else statement2
    

在这里插入图片描述
3. 第三种格式

  •   if(关系表达式1) {
           语句体1;
           }
           else  if (关系表达式2) {
           语句体2;
           }
           …
           else {
           语句体n+1;
           }
    

在这里插入图片描述
注意:else子句会与最邻近的if构成一组

switch语句

  • 格式:

  • switch(表达式) { 
      	case 值1:
      		语句体1;
      		break;
      	case 值2:
      		语句体2;
      		break;
      	case 值3:
      		语句体3;
      		break;
      	...
      	default:
      		语句体n+1;
      		break;
      }
    
  • 注意
    【1】表达式的值可以是 byte short int char 枚举enum 字符串字面量
    【2】case后面跟的是要和表达式进行比较的值
    【3】default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似

  • 执行流程

  • 在这里插入图片描述

循环结构

while

基本格式

  •   while(判断条件语句) 
      {
       循环体语句;
       }
    

扩展格式

  •   初始化语句;
      while(判断条件语句) 
      {
       循环体语句;
       控制条件语句;
       }
    

执行流程
在这里插入图片描述

do while

基本格式

  •   do {
       循环体语句;
       } while((判断条件语句);
    

扩展格式

  •   初始化语句;
      do {
       循环体语句;
       控制条件语句;
       } while((判断条件语句);
    

执行流程
在这里插入图片描述

for

格式:

  •   for (初始化语句; 判断条件语句; 控制条件语句) 
      {
       循环体语句;
       }
    

执行流程
在这里插入图片描述

注意

  1. do…while循环语句至少执行一次循环体。
  2. for和while循环语句要先进行条件的判断,然后看是否执行循环体语句(有可能一次也不执行)

练习

求1-100的数据和
for循环实现

		int sum = 0;
		
		for(int x=1; x<=100; x++) {
			//累加即可
			sum += x;
		}
		System.out.println("sum:"+sum);

while循环实现

		int x=1;
		while(x<=100) {
			//累加即可
			sum += x;
			x++;
		}
		//输出结果
		System.out.println("sum:"+sum);

for循环练习打印水仙花数

  •   所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身
    
  •   举例:153是一个水仙花数:1*1*1 + 5*5*5 + 3*3*3 = 1 + 125 + 27 = 153
    
public class ForTest {
	public static void main(String[] args) {
		//三位数其实是告诉了我们范围,这个用for循环实现
		for(int x=100; x<1000; x++) {
			//获取每一个三位数的个位,十位,百位(规律:变成低位再对10取余)
			int ge = x%10;
			int shi = x/10%10;
			int bai = x/10/10%10;
			
			//拿个位,十位,百位的立方和和该数本身进行比较
			if((ge*ge*ge+shi*shi*shi+bai*bai*bai) == x) {
				//如果相等,就说明该数是水仙花数,在控制台打印
				System.out.println(x);
			}
		}
	}
}

循环嵌套练习打印99乘法表

public class ForForTest1 {
	public static void main(String[] args) {
		for(int x=1; x<=9; x++) {
			for(int y=1; y<=x; y++) 
				System.out.print(y+"*"+x+"="+y*x+"\t");
			System.out.println(); //打印空行(换行)
		}
	}
}

中断控制流程的语句

break&continue:离开使用场景的存在是没有意义的

break

作用:

  1. 跳出单层循环
  2. 跳出多层循环:带标签的跳出(标签名要符合Java的命名规范)
  •   格式:
      标签名:循环语句
    
  1. 例如
for(int x=1; x<=5; x++) {
	if(x == 3) break; //作用1:跳出单层循环
	System.out.println("HelloWorld"); //只会输出前2次

wc:
for(int x=1; x<=3; x++) {
	for(int y=1; y<=4; y++) {
		if(y == 2) break wc; //作用2:跳出多层循环
		System.out.print("*"); //最后只会输出1个“*”
		}
		System.out.println();
	}

注意:
5. 标签必须放在希望跳出的最外层循环之前,并且紧跟一个冒号
6. 只能跳出语句块,不能跳进语句块
7. 使用break语句后:建议需要检测是正常跳出还是由break跳出

continue

  1. 作用:退出本次循环
  2. 例如
for(int x=1; x<=5; x++) {
	if(x == 3) break; // 跳出本次循环
	System.out.println("HelloWorld"); //第三次的helloworld不会输出

Random随机数

• 作用:用于产生一个随机数
• 使用步骤 (和Scanner类似)

  1. 导包: import java.util.Random;
  2. 创建对象:Random r = new Random();
  3. 获取随机数:int number = r.nextInt(10);
  • 注意:
    【1】产生的数据在0到10之间,包括0,不包括10,即 [0,10)
    【2】括号里面的10是可以变化的,如果是100,就是 [0,100) 之间的数据
    【3】要是需要获取1~100的数:int number = r.nextInt(100)+1;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值