0
点赞
收藏
分享

微信扫一扫

Java学习笔记(第二章)

崭新的韭菜 2022-04-25 阅读 99
java

目录

1、数据类型的转换

2、运算符

3、控制台输入

4、if、switch、while、do while语句讲解


1、数据类型的转换

在Java中任意基本数据类型可以转型到另外任意基本类型,数据类型的转换有两种,一种是隐式转换,另一种是强制转换。隐式转换:顾名思义就是隐藏式转换,就是编译器会帮你自动转换数据类型,而强制转换则是需要你自己添加相关的代码以此来达到数据类型转换的目的。规则就是容量大的数据类型转换成容量小的数据类型。话不多说 直接上例子:

short a = 5;
int b = a;
//这里就是我们说的隐式转换 那么在这里short类型我们都知道这是只有两个字节 而int类型有4个字节 
//显然int类型的数据是大于short类型的数据的 但是编译器却不报错 这就是隐式转换 就是编译器帮你
//偷偷转换了
//那么我们再来看一种
double f = 10.5;
int c = (int)f;
//那么这种写法就是强制转换的写法 就把double类型的f强制转换成int类型的c,当然了 这种并不好 这种转
//换一个存在一个小问题 就是我们说的精度损失 那10.5转换成int类型的就变成了10,为什么呢 因为 举个
//例子就明白了  int 类型的263 二进制是100000111,转换为byte类型的 因为byte类型的只有1个字节 8位
//二进制数 0000 0111,通过强制转换 10进制的263变为7,损失了原有的精度,所以强制转换也不太好,也
//不是所有的都会损失精度

  long类型与float类型的大小  float在内存中占用的是4个字节的空间,而long型占用的是8个字节的空间。可是为 什么4个字节的float型的最大值会大于long型的最大值呢? long整型数,在内存中占用8个字节共64位,它表示的数值有2的64次方,平 分正负,数值范围是负2的63次方到正2的63次方-1。 而float在内存中占4个字节,共32位,但是浮点数在内存中是这样的 V=(-1)^s * M *2^E

s是符号位 M是指数域 E是小数位 第一位是符号位 接下来的8位是指数域 剩下的是小数域 所以四个字节的float类型大于8个字节的long类型的所以long 类型要转换成float类型是需要强制转换的

2、运算符

    Java 语言支持如下运算符:

算术运算符: +,-, * ,/,%,++,-- 

不用多说 我们天天用

字符串连接运算符:+

String me = "我";
String str1 = me + "很帅";

  在这里就起到一个字符串连接的作用

关系(比较)运算符: >,= ,<= , == ,!=

逻辑运算符: !,& , | , &&,|| 

  值是布尔型的

赋值运算符: = ,+ = ,- = , * = ,/ =

 条件运算符  表达式1 ? 表达式2 : 表达式3

位运算符 << >> >>>

  注意 在赋值运算中 有的可能会发生隐式转换 

程序短路问题  主要是在逻辑运算符中 eg : false && true 在这条语句中  如果在预先运行false 语句后程序就不会再运行后面为true的那条语句 当然 || 也一样 如果前者语句为true 则不会再运行后面那条语句 直接判断为假。

3、控制台输入

  使用标准输入串System.in 使用Scanner 获得一串字符或一组数字 在新增一个Scanner对象时需要一个System.in对象因为实际上还是System.in 在取得用户输入

  Scannernext方法用以取得用户输入的字符串 nextInt()用以将取得输入的字符串转化为正整形

同样的 nextFloat() 转化为浮点型 

nextBoolean() 转成Boolean型

用法:

Scanner scanner = new Scanner(SYstem.in);
int n = scanner.nextInt();

在使用Scanner时 需要导入 java.util.Scanner;包 具体操作为: import   java.util.Scanner;

还有一种方法时用io 中的  BufferedInputStream()这种方法和上面那种是一样的也是通过System.in来取得用户的输入 

Scanner scanner = new Scanner(BufferedInputStream(System.in));
int n = scanner.nextInt();

虽然看起来比较麻烦一点  但是用这个肯定是有用这个的好处的 这个在我们平时写算法的时候是会考虑算法的时间的问题的 用这个进行输入要比用上面第一个那种快的多 这个比较麻烦 因为它除了需要导入 java.util.Scanner;包之外 还需要导入java.io.BufferedInputStream; 包 导入的方式和上面一样 在包名前面加上import就好了。

4、if、switch、while、do while、语句讲解

  if(表达式){
if中的表达式为真值的时候 运行if中的语句

}

else {

if语句中的表达式为false的时候运行else中的

}

switch(值 也可能是字符或者是字符串)

{

case 值:

如果与switch中输入的匹配的话就运行这个case中的语句 否则看下一个case

break;退出这个switch

default {

如果switch中的与上面的都不匹配 则运行default中的

}

whiel(表达式)

{

如果表达式的值为true时则运行 若为false时则退出

}

do{

}while(表达式);

先运行一遍do中的内容然后与while一样就ok了

举报

相关推荐

0 条评论