Java语言基础 #基础语法 #Day2 #数据类型转换 #运算符 #方法入门

一、数据类型转换

  • 按理说,这段代码会报错(应为99L,而不是99),可是没有,怎么回事?
    在这里插入图片描述
long num1 = 99  // 左边是long类型,右边是int类型,发生了什么?
  • 当数据类型不一样时,将会发生数据类型转换。

1. 自动类型转换(隐式)

  • 特点: 代码不需要特殊处理,自动完成
  • 规则: 数据范围从小到大转换。(从大到小不行)(是数据范围,不是占用内存大小)
public class Demo1DataType{
	public static void main(String[] args){
		// int-->long,符合从小到大,自动
		long num1 = 99;
		// float-->double,符合从小到大,自动
		double num2 = 9.9F;
		/*
			long类型的内存占用更大,
			但这里比较的是数据范围,
			所以float更大。
			long-->float,符合从小到大,自动
		*/
		float num3 = 99L;
		System.out.println(num1);
		System.out.println(num2);
		System.out.println(num3);
	}
}

在这里插入图片描述

2. 强制类型转换(显式)

不能自动转换时,需要特殊的格式进行强制转换

// 变量类型 变量名 = (变量类型) 数据;
public class Demo2DataType{
	public static void main(String[] args){
		byte num1 = (byte)99L;
		System.out.println(num1);
	}
}

强制类型转换,会有很多类型

  • 数据溢出:
byte num2 = (byte)500

在这里插入图片描述

  • 精度损失:
int num3 = (int)3.7  // 小数部分直接丢失

在这里插入图片描述

3. 数学运算

  • byte/short/char 这三种类型都可以发生数学运算
    char的计算是拿字符对应的ASCII值(比如A的char值是65)。
System.out.println('A')  // A
System.out.println('A' + 1)  // 66

在运算时,都会被首先提升成为int类型,然后再计算。

byte num4 = 33;
byte num5 = 66;
// byte sum45 = num4 + num5;  // 这里会报错,因为右边是int
byte sum45 = (byte)(num4 + num5);
System.out.println(sum45);

在java中,boolean不能发生数据类型转换

4. ASCII编码

计算机这个重色轻友的家伙,只认得0和1。我们认识的10进制,认识的字母,怎样让他认出来呢?答案就是硬射映射。
10进制和2进制,有一一对应的关系,如果让10进制数和字符有一一对应的关系,那么2进制和字符不就有一一对应的关系嘛?常言道,我对象的对象,还是我对象(这是迎男而上的哲学)。

  • 这个处对象的过程,就叫编码表。(其中记录美国字符处对象过程的,叫做ASCII)
    ASCII表
  • 把这几个记住就行(后面按顺序推):
    48–>0
    65–>A
    97–>a
char s1 = '1';
System.out.println(s1);  // 1
System.out.println(s1 + 0);  // 49

char s2 = 'a';
// 符合从小到大,发生自动类型转换
int num6 = s2;
System.out.println(num6);  // 97

在这里插入图片描述

二、运算符

  • 运算符: 进行特点操作的符号,如“+”
  • 表达式: 用运算符相连的式子

1. 算数运算符

1.1 +-*/%&字符串连接

运算符 说明
+ 加法运算,字符串连接运算
- 减法运算
* 乘法运算
/ 除法运算
% 取模运算,两个数字相除取余数
++-- 自增自减运算
  1. java中整数运算,不会产生浮点数(除法会舍去小数部分)
  2. 一旦运算涉及不同类型,结果将会按照数据类型范围大的那种(浮点数和整数相加得浮点数)
  3. 对于字符串String而言,加号代表连接操作(字符串加其他数据类型,还是字符串)
  4. 运算有优先级,记住,小括号优先级最高即可。(这样也可以让代码可读性更强)

在这里插入图片描述
在这里插入图片描述

1.2 自增自减运算符

自增自减运算符,可以让原本的值±1。常量不可以使用。

  • 使用格式: ++变量名变量名++
  • 使用方式:
    单独使用:++变量名变量名++没有任何区别,完全一样
    混合使用(赋值,打印之类):++变量名,变量立马+1,任何拿着结果进行使用(先加后用)
         变量名++,首先使用变量原值,任何再让其+1(先用后加)
    在这里插入图片描述

注: 最后的代码可读性很差,日常生活不要这样写
在这里插入图片描述

2. 赋值运算符

复合

赋值运算符 含义
= 等于
+= 加等于
- = 减等于
*= 乘等于
/= 除等于
%= 取模等

在这里插入图片描述

  • 会发现:
    a += b --> a = a + b
    复合赋值运算,隐含了一个强制 类型转换。

3. 比较运算符

比较运算符,是将两个数据进行比较。比较的结果是boolean

符号 说明
== 比较符号两边数据是否相等,相等结果是true。
< 比较符号左边的数据是否小于右边的数据,如果小于结果是true。
> 比较符号左边的数据是否大于右边的数据,如果大于结果是true。
<= 比较符号左边的数据是否小于或者等于右边的数据,如果小于结果是true。
>= 比较符号左边的数据是否大于或者等于右边的数据,如果小于结果是true。
!= 不等于符号 ,如果符号两边的数据不相等,结果是true

在这里插入图片描述

4. 逻辑运算符

逻辑运算符只能用于布尔值,产生布尔值。

运算符 说明
&& 短路与 1. 两边都是true,结果是true;2. 一边是false,结果是false;短路特点:符号左边是false,右边不再运算
|| 短路或 1. 两边都是false,结果是false;2. 一边是true,结果是true;短路特点: 符号左边是true,右边不再运算
! 取反 1. ! true 结果是false;2. ! false结果是true
  1. 短路效果,可以节省性能。只要短路了,后边的代码,压根不会执行。
  2. 与或能将n个条件连写。
    在这里插入图片描述

5. 三元运算符

  • 一元运算符: 只需要一个数据,如:取反!,自增++
  • 二元运算符: 需要两个数据,如:加法+,赋值=

  • 格式:
    条件 ? 值1:值2;
    条件为true,返回值1
    条件为false,返回值2
    在这里插入图片描述
  • 注意: 三元运算符一定要使用,赋值也好,直接打印也罢,一定要使用。
    如果是赋值的话,值的数据类型要满足变量的数据类型。

三、方法入门

有一个很著名的罗老师,罗翔老师,他姓张,有个外号叫张三。
张三昨天很无聊,拿起一本刑法,战术摸下巴,然后去犯罪了。
张三今天很无聊,拿起一本刑法,战术摸下巴,然后去犯罪了。
张三以后肯定天天无聊,天天拿起一本刑法,天天战术摸下巴,然后去犯罪。

  • 写成代码长这样:
public class Demo1DataType{
	public static void main(String[] args){
		System.out.println("看刑法")
		System.out.println("战术摸下巴")
		System.out.println("去犯罪")

		System.out.println("看刑法")
		System.out.println("战术摸下巴")
		System.out.println("去犯罪")

		System.out.println("看刑法")
		System.out.println("战术摸下巴")
		System.out.println("去犯罪")
		// ......
	}
}
  • 那么问题来了 ,张三累不累?
  • ,张三累不累,我不知道,但是我累。

有没有办法,让我不那么累?把张三的日常,写成一个“张三的一天”这个方法,每次张三无聊时,都使用这个方法就行。
方法的重要功能,就是提高代码复用性

最基本的方法格式

  • 最基本的方法格式:
public static void 方法名称(){  // 方法名使用小驼峰
	方法体;
}

方法定义无先后顺序
方法的定义不能包含嵌套包含关系

  • 调用:
方法名称();
  • Demo: 张三的一天

    在这里插入图片描述
发布了48 篇原创文章 · 获赞 30 · 访问量 4645

猜你喜欢

转载自blog.csdn.net/weixin_44925501/article/details/105596152