培训日记2

昨天的简单回顾

能够计算我们的二进制和十进制之间的转换
使用我们的简单的dos命令
理解我们的java跨平台这个特性
理解我们的jdk和jre的组成
能够配置我们的环境变量JAVA_HOME
能够编写我们的程序,在txt中编写
理解我们的关键字
理解我们的标识符(类,方法,变量取名)
能够定义我们的所有类型的常量

变量:

常量是固定不定不变的量,变量就是可以变化
和我们数学当中的x和y这种差不多,可能我们的x和y有多种情况

数据类型:

在java中就分为两类:
基本类型:整数,浮点数,字符,波尔
引用类型:类,接口,数组

基本数据类型(重点):

八种基本类型:

字节型: byte 1个字节 -128-127
短整型: short 2个字节 -32768-32767
整型: int(默认) 4个字节 -2^31 - 2^31-1
长整型: long 8个字节 -2^63 -2^63-1
单精度浮点型:float 4个字节
双精度浮点型:double(默认) 8个字节
字符型:char 2个字节 0-65535

布尔类型:boolean 1个字节 true,false
java中默认的类型:整数类型默认是int,浮点类型默认是double

变量的定义:
变量定义的三要素:
数据类型 变量 数据值
举例子:
byte b=100;
System.out.println(b)

注意:
	float d=3.4F;
	long s=123L;
当我们定义一个float类型的时候,尾部加f或F
当我们定义一个long类型的时候,尾部加L

注意事项:

变量名称:在同一个大括号当中,变量的名字不可以相同
变量赋值:定义变量,不赋值不能使用

数据类型的转换:

java程序中要求参与的计算数据,必须要数据类型一致,如果不一致数据类型会发生类型转换

自动类型转换:

publilc class HelloWorld{
	public static void main(String[] args){
		//定义字节变量
		byte b=2;
		int i=3;
		byte c=b+i;
	}
}
```![在这里插入图片描述](https://img-blog.csdnimg.cn/20200730190941934.png)
一个int类型和byte类型进行加法运算的时候,结果应该是int类型:
## 自动转换:
就是将取值范围小的,自动提升为取值范围大的。
正确的写法:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200730191111363.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNzkzNTky,size_16,color_FFFFFF,t_70)
自动类型转换图:
byte类型为一个1个字节,int类型为4个字节,byte类型自动补充3个字节,然后运算结果变成4个字节。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200730191209269.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNzkzNTky,size_16,color_FFFFFF,t_70)

```java
public class HelloWorl{
	public static void main(String[] args){
		double d=2.5;
		int i=3;
		double s=d+i;
	}
}

转换规则:

范围小的类型转换为范围大的类型:
byte、short、char运算的时候都会自动提升为int类型
byte short char int long float double

强制转换:

将1.5赋值给我们的int类型,会怎么样?
在这里插入图片描述
强制转换:
将范围大的值赋值给范围小的值的时候,需要强制转换
相比较而言,我们java中自动转换是java帮我们的做的,但是强制转换,需要我们手动

注意:

浮点型转为整型,直接去掉小数位,可能造成精度损失。
int强制转换为short砍掉2个字节,可能造成精度损失
一道面试题:
在这里插入图片描述

ASCII表:

在计算机内部都需要二进制0.1的数据,如何让计算机可以识别我们的人类的文字,产生了一个表 就是将人类的文字和一个十进制数的对应起来的一张表:
在这里插入图片描述
在char类型和int类型运算的时候,char类型的字符先查询ascii表,得到数据,在运算。
char类型默认应该2个字节,int类型4个字节。

运算符

算数运算符:

+加法运算,字符串的拼接
-减法运算
*乘法运算
/除法运算
%取余运算
++,–自增自减
在java中,整数使用以上运算符,无论如何计算,得出的结果一定是整数,不会得出小数
在这里插入图片描述
++运算:变量自己+1,
独立运算:
变量在独立运算的时候,前++和后++一样
在这里插入图片描述
混合运算:
和其他变量放在一起,前++和后++就不一样。
在这里插入图片描述
在这里插入图片描述
+符号:
+符号在遇见字符串的时候,表示拼接的含义
“a”+“b” 结果就是“ab”
在这里插入图片描述

赋值运算符:

= 等于号
+= 加等于 s+=1 -------s=s+1
-= 减等于
*= 乘等于
= 除等于
%= 取模等
在这里插入图片描述

比较运算符

== 比较符号两边的数据,如果相等,结果是一个true;
< 比较符号两边数据,如果左边的小于右边的,这个时候结果就是true; > 比较符号两边的数据,如果左边的大于 右边的,结果返回true。
<= 比较符号两边的数据,如果左边的小于等于右边的,结果返回true >= 比较符号两边的数据,如果左边的大于等 于右边,结果返回true。
比较运算符中,两个数据进行比较,运算结果就两个值,要不是true,要不然就是false。 != 不等于符号,如果符号两边的数据不相等,结果是true。

public class HelloWorld { 
	public static void main(String[] args) { 		
		System.out.println(1==1);//true 
		System.out.println(1<2);//true 
		System.out.println(1>2);//false 
		System.out.println(1>=2);//false 
		System.out.println(1<=2);//true 
		System.out.println(1!=2);//true 
	} 
}

逻辑运算符
&& 短路与 两边如果都是true,那么结果就是true 一边是false,结果就是false
短路特点:符号左边如果是false,右边就不计算。 || 短路或
两边如果都是false ,那么结果就是false
一边为true,那么结果就是true
短路特点:符号左边如果是true,右边不计算。
&
|

public class HelloWorld{
	public static void main(String[] args){
		int a=2;
		int b=2;
		System.out.println(false&&(b++>a));
		System.out.println(b);

		int c=2;
		int d=2;
		System.out.println(true|(d++>2));
		System.out.println(true||(d++>2));
		System.out.println(d);
	}
}

三元运算符:

数据类型 变量名=布尔类型表达式?结果1:结果2;
如果布尔类型表达式结果是true,那么就是结果1,如果布尔类型表达式是false,那么结果就2

public class HelloWorld{
	public static void main(String[] args){
		int a=(9>3)?1:2;
		System.out.println(a);
	}
}

下面一题简单的练习

public class HelloWorld{
	public static void main(String[] args){
		int a=3,b=4,c=5;
		//数据类型 变量名=布尔类型表达式? 结果1:结果2;
		int max=a>b?(a>c?a:(c>b?c:b)):b>c?b:(c>a?c:a);
		System.out.println(max);
	}
}

最后结果为5

方法的入门

概念:
在我们学习运算符的时候,我们可能测试每一个运算符的时候需要创建一类,为了防止我们的代码重复或者冗余, 我们就有了方法这个概念。
方法:就是将一个功能提取出来,把代码单独卸载一个大括号里面,形成一个单独的功能。可以减少我们的重复的 代码。
方法的定义:
权限修饰符 返回值类型 方法名(参数列表){
代码;
return;
}

修饰符:目前是固定写法:public static
返回值类型:目前固定写法void 其他的返回值类型我们后面
方法名:为了我们方法定义一个名字,只要满足我们的标识符规则就可以
参数列表:目前无参数
return :方法结束,因为返回值为void ,方法大括号里面return可以不写。

public class Demo{
	//程序入口
	public static void main(String[] args){
		//方法调用
		add();
	}
	//一个方法定义成功
	public static void add(){
		System.out.println("我是一个方法")
	}
}

注意事项:
方法定义的时候:必须定义在类中,方法外,方法不能定义在另一个方法中.
正确的写法:
在这里插入图片描述
错误写法:
在这里插入图片描述

扩展的知识:

public class Demo{
	public static void main(String[] args){
		short s=1;
		s+=1;
		//s=s+1;
		System.out.println(s);
	}
}

在我们s+=1逻辑是可以看做s=s+1计算结果被提升为int类型,再向short类型赋值会报错,因为我们的大范围的类 型给小范围赋值会报错,但是s+=1只进行一次运算,并且它只带强制转换的功能。
常量和变量的运算问题:

public class Demo {
	//程序入口
	public static void main(String[] args){
		byte s=1;
		byte s1=2;
		byte s2=1+2;
		//byte s3=s+s1;
	}
}

注意点:s2=1+2,1和2都是常量,为固定不变的值,在编译的时候,我们的编译器已经确定1+2的结果,它判断出 来并没有超过我们的byte类型的范围,所以可以成功复制。

而我们的s3=s+s1,这个是我们两个byte类型运算,先转换为我们的int类型,在计算,然后赋值我们的byte所以会 报错,大范围不能直接赋值给小范围。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值