java_day2学习笔记


title: Java_Day_2学习笔记
data: 2024-07-10
tags: Java

运算符

介绍

运算符是一种特殊的符号,表示数据间的一些操作

  • 算术运算符
  • 赋值运算符
  • 关系运算符【比较运算符】
  • 逻辑运算符
  • 位运算符【二进制基础】
  • 三元运算符

算术运算符

运算符运算
+正号
-负号
+
-
*
/
%取余
++自增(前)先运算后取值
自增(后)先取值后运算
- -自减(前)先运算后取值
自减(后)先取值后运算
+字符串相加

除法(/)

Java在进行除法运算的时候,一定要关注数据的类型,相同的数据,不同的数据类型可能会得出来不同的结果。这一点其实在C++中也存在。下面是一个关于除法运算的一个案例(仅供参考):

// ArithmeticOperator.java
// 创建一个公共的类,切记一个.java文件只能有一个公有库,且名字与文件名一致
public class ArithmeticOperator{
    // 创建main函数,至于为什么是这个,笔者现在还不知道,笔者也在学习
    public static void main(String[] args){
        System.out.println(10 / 4); // 2;因为数据的类型都是int,输出也应该是int
        System.out.println(10.0 / 4); // 2.5;由于10.0是double,则在运算的时候,数据结果在运算的过程中转换为了double类型
        double d = 10 / 4;
        System.out.println(d); // 2.0;在运算过程中右边的数据并没有转变数据类型,所以右边的结果应该是int类型,但是现在要赋值给double类型的变量,所以右边的int类型被转换成了double
    }
}

取模(取余,%)

其实取模的运算可以看作一个公式,即 a % b = a - a / b * b

下面是一些案例,仅供参考:

// ArithmeticOperator.java
// 创建一个公共的类,切记一个.java文件只能有一个公有库,且名字与文件名一致
public class ArithmeticOperator{
    public static void main(String[] args){
        System.out.println(10 % 3); // 1
        System.out.println(-10 % 3); // -1
        System.out.println(10 % -3); // 1
    }
}

其实在上面的案例中我们可以先不看两个数字的符号。

按绝对值,即正数来运算,最后得出来的余数与%前面的数字的符号一致。

自增(++)

自减与自增基本一致,这里笔者就只写自增啦,自减的话希望大家可以举一反三进行程序编写和测试。

// ArithmeticOperator.java
// 创建一个公共的类,切记一个.java文件只能有一个公有库,且名字与文件名一致
public class ArithmeticOperator{
    public static void main(String[] args){
        int i = 1;
        int k = i++;      
        System.out.println(k); // 1; ++在后面就是先把i拿来用,再给i增加一个数值。
        System.out.println(i); // 2
        int m = ++i;
        System.out.println(i); // 3
        System.out.println(m); // 3;++在前面就是先给i增加一个数值,再拿i来用。
    }
}

如果是变量单独运算,即不与其它变量进行混合运算时,前后无所谓。

小题两道

int i = 1;
i = i++; //会使用一个临时变量:(1)temp=i;(2)i=i+1;(3)i=temp
i = ? // 1
int i = 1;
i = ++i;//使用一个临时变量(1)i=i+1;(2)temp=i;(3)i=temp
i = ? // 2

编程:定义一个变量来保存华氏温度,华氏温度转换成摄氏温度的公式为: 5/9*(华氏温度-100),请求出华氏温度对应的摄氏温度。[123.4]

步骤:分析需求;给出思路;写代码。

关系运算符

  • 结果都是布尔型,即只有true和false两种。
运算符运算
==相等于
!=不等于
<小于
>大于
<=小于等于
>=大于等于
instanceof检查是否是类的对象

比较运算符的==不要写成=,=是赋值运算符。

关系运算符理解各个运算符的实际意义即可。

逻辑运算符

  • 短路与&&, 短路或||, 取反!
  • 逻辑与&, 逻辑或|,逻辑异或^
aba&&ba||ba&ba|b!aa^b
truetruetruetruetruetruefalsefalse
truefalsefalsetruefalsetruefalsetrue
falsetruefalsetruefalsetruefalsetrue
falsefalsefalsefalsefalsefalsetruefalse

对比上表理解每个运算符的运算规则。

在这里插入图片描述

其他的运算符可以按照上面的

对于短路与&&, 当第一个条件是false,后面的条件就不会再执行,有and的意思。

public class LogicOperator{
	public static void main(String[] args){
		int a = 5;
		int b = 9;
		if(a < 1 && ++b < 50){
			System.out.println("Over!");
		}
		System.out.println(b); 
        // 9;没有运行++b的操作,可以清晰地知道当判断了a<1为false后,判断语句就不再向后执行,这是短路与&&te'you。
	}
}

短路或||和短路与&&类似,当第一个条件是true之后,后面的条件不再判断,有or的意思。

==注意:==短路与和短路或,当第一个条件就可以确定整个式子的值时,就不再看第二个式子;逻辑与和逻辑或,所有条件必须全部都要检查后才能给出整个式子的答案

赋值运算符

  • 赋值运算符 =
    • 从右向左运算
    • 符号左边必须是变量,右边可以是变量、表达式、常量值
  • 复合赋值运算符
    • +=
    • -=
    • *=
    • ^=
    • %=
    • 复合运算符在进行运算的时候会进行类型转换

三元运算符

条件表达式?表达式1:表达式2;

  • 如果条件表达式是true,则进入表达式1
  • 如果条件表达式是false,则进入表达式2

表达式返回的值必须是接收变量所能接收的类型,举例:

int a = 1;
int b = 2;
int c = a > b ? 1.1 : 3.2; //报错,因为接收变量c是int类型,而1.1与3.2默认是double类型,int类型不兼容double类型,所以会报错
int d = a > b ? (int)1.1 : (int) 3.2; //3; 这里使用的是强转,因此右边成为了int类型,可以被左边接收

位运算

进制

满基数就向高位进1

  • 二进制(0b):0,1;基数是2
  • 十进制:0-9;基数是10
  • 八进制(0):0-7;基数是8
  • 十六进制(0x):0-F;基数是16
int n1 = 0b1010; //10
int n2 = 1010;   //1010
int n3 = 01010;  //520
int n4 = 0x1010; //65793

码制

最高位是符号位,且java中没有无符号数,即java中的数都有符号位,0表示正数,1表示负数

  • 原码:按照二进制规则来写就行
  • 反码:正数时与原码一致;负数时,原码符号不变,其他的按位取反
  • 补码:正数时与原码一致;负数时,反码基础上加1

计算机中的运算,都是以补码形式进行运算;但是计算结果看的是原码。

运算

运算符:&、|、^、~

2&3;// 2
//2的补码 00000000 00000000 00000000 000000010 
//3的补码 00000000 00000000 00000000 000000011
//按位与  00000000 00000000 00000000 000000010 
// 运算后的结果是补码,转换为原码,因为是正数,所以一致。
~2; //-3
//2的补码 00000000 00000000 00000000 000000010 
//按位取反11111111 11111111 11111111 11111101       这个时候答案是补码,需要转换为原码才能输出
//答案反码11111111 11111111 11111111 11111100
//答案原码10000000 00000000 00000000 000000011

运算符:>>、<<、>>>

>>算术右移,低位溢出,符号位不变,并用符号位补溢出的高位;本质是/2
<<算术左移,符号位不变,低位补0;本质是*2
>>>逻辑右移,低位溢出,高位补0
没有<<<符号

标识符的规则和规范

规则

规则就是必须遵守的,不应该违背的。

==变量命名:==不能包含关键字(public、int、double等)和保留字(goto等),并且不能用数字开头;变量名只能由数字,字母和符号(_与$)组合来命名

规范

为了看起来更加专业和方便[没有必须要求]

  • 包名:多单词组成时所有字母用小写,如aaa.bbb.ccc
  • 类名、接口名:多单词组成时,所有单词首字母大写(大驼峰),如LogicOperator
  • 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写(小驼峰),如logicOperator
  • 常量名:所有字母均大写,如MAXN

键盘输入

介绍

在进行程序的开发时,我们经常需要与用户进行交互,接收用户的数据输入等。java接收这些信息就需要创建一个扫描器(对象),Scanner

步骤

  • 导入该类的所在包
  • 创建该类对象(声明变量)
  • 调用里面的功能

举例说明:从键盘输入一些信息,让java接收

import java.util.Scanner;  // 把java.util下的Scanner类导入程序 
// Scanner是简单的文本扫描器

public class input{
	
	// 编写一个main方法
	public static void main(String[] args){
		// 进行键盘的输入
		// new 就是创建一个对象,猜测是构造函数
		Scanner scan = new Scanner(System.in); //scan只是一个变量名,可在规定的基础上进行随意的更改
		//用户输入并进行接受
		System.out.print("请输入数据"); //abcd
		String data = scan.next(); //接收用户的输入 
		System.out.println(data);
        
        int num = Scan.nextInt(); //接收int类型的数据
        System.out.paintln(num); 
	}
}

大家也可以试试其他的输入类型,不过不同的类型接收方式也不同哈。

作业

将String转换为double类型,将char转换为String类型

String s = "123.4";
double d = Double.parseDouble(s);

char c = 'C';
String s1 = c + "";

判断正误

byte b = 19; short s = b + 2; //error;2是int类型,所以右边是int,int不能给short
double d = 1.1F; //可以
int i = 2; char c = i + 1; //error;int类型不能装入char

接收方式也不同哈。

作业

将String转换为double类型,将char转换为String类型

String s = "123.4";
double d = Double.parseDouble(s);

char c = 'C';
String s1 = c + "";

判断正误

byte b = 19; short s = b + 2; //error;2是int类型,所以右边是int,int不能给short
double d = 1.1F; //可以
int i = 2; char c = i + 1; //error;int类型不能装入char
  • 24
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值