day01-数据类型、运算符

基本常识
1.JDK,JRE,JVM分别是什么?
(1)作用
JVM(Java Virtual Machine):保证Java语言跨平台
JRE(Java Runtime Environment):Java程序的运行环境
JDK(Java Development Kit) :Java程序的开发环境
(2)关系
JDK:JRE+工具
JRE:JVM+类库
2.path环境变量(掌握)
(1)path环境变量的作用:保证javac命令可以在任意目录下运行。
(2)path配置的方案:
	新建:
		变量名:JAVA_HOME
		变量值:D:\develop\Java\jdk1.7.0_60
	修改:
		变量名:Path
		变量值:%JAVA_HOME%\bin;以前的内容
3.classpath环境变量
(1)classpath环境变量的作用:保证class文件可以在任意目录下运行
数据类型
1. 8中基本结构是什么?
原始类型: booleancharbyteshortintlongfloatdouble(String不是基本类型)
封装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double

在这里插入图片描述
1、包装类是对象,拥有方法和字段,对象的调用都是通过引用对象的地址,基本类型不是
2、包装类型是引用的传递,基本类型是值的传递
3、声明方式不同,基本数据类型不需要new关键字,而包装类型需要new在堆内存中进行new来分配内存空间
4、存储位置不同,基本数据类型直接将值保存在值栈中,而包装类型是把对象放在堆中,然后通过对象的引用来调用他们
5、初始值不同,eg: int的初始值为 0 、 boolean的初始值为false 而包装类型的初始值为null
6、使用方式不同,基本数据类型直接赋值使用就好 ,而包装类型是在集合如 coolection Map时会使用

2.float f1 = (float)11.11; float f2 = 11.11f; 这两种定义数据有什么不同吗?
f1其实是通过一个double类型转换过来的。而f2本身就是一个float类型。
3.java语言中的字符char可以存储一个中文汉字吗?为什么呢?
char类型变量是用来储存Unicode编码的字符的,unicode字符集包含了汉字,所以char类型当然可以存储汉字的。
如果某个生僻字没有包含在unicode编码字符集中,那么char就不能存储该生僻字。
4. byte b1=3, b2=4 , b ; b=b1+b2 ; b=3+4 ; 哪句是编译失败的呢?为什么呢?
b = b1 + b2;会编译失败
因为当是变量相加时,会首先看类型,最终把结果赋值的也会考虑类型问题。
常量相加,首先是先做加法,然后看结果是否在赋值的数据类型范围内,如果不是,才会报错。
通过反编译工具也会发现上面的代码、会直接被编译为(.class)
byte b1 = 3 , b2 = 4 , b ;
b = 7 ;
5. byte b = 130;有没有问题?如果我想让赋值正确,可以怎么做?结果是多少呢?

我们要想知道结果是什么,就应该知道是如何进行计算的。而我们又知道计算机中数据的运算都是补码进行的,显示给我们的是原码转换为十进制的数字。那我们要得到补码,首先要计算出数据的二进制。

  • 获取130这个数据的二进制。
    00000000 00000000 00000000 10000010
    这是130的原码,也是反码,还是补码。
  • 做截取操作,截成byte类型的了。
    10000010
    这个结果是补码。
  • 已知补码求原码。
符号位数值类
补码10000010
反码10000001
原码111111110
byte b= (byte)130;//强制转换
System.out.pringln(b);//-126

对应我们看见的十进制就是 -126
在这里插入图片描述

6. short s = 1; s = s + 1;有没有问题?如果有怎么解决?short s = 1; s += 1;有没有问题?如果有怎么解决?
1) 对于short s1=1;s1=s1+1来说,在s1+1运算时会自动提升表达式的类型为int,那么将int赋予给short类型的变量s1会出现类型转换错误。

2) 对于short s1=1;s1+=1来说 +=是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。

在这里插入图片描述

7. Integer和int的区别
int是java的8种基本数据类型之一。Integer是Java为int类型提供的封装类。

int变量的默认值为0,Integer变量的默认值为null,这一点说明Integer可以区分出未赋值和值为0的区别,
比如说一名学生没来参加考试,另一名学生参加考试全答错了,那么第一名考生的成绩应该是null,第二名考生的成绩应该是0分。

Integer类内提供了一些关于整数操作的一些方法。
8.switch语句能否作用在byte上,能否作用在long上,能否作用在string上?
switch(expr1)中,expr1只能是一个整数表达式或者枚举常量,
整数表达式可以是int基本类型或Integer包装类型。

由于,byte,short,char都可以隐式转换为int,所以,这些类型以及这些类型的包装类型也是可以的。

long和String类型都不符合switch的语法规定,并且不能被隐式转换成int类型,
所以,它们不能作用于swtich语句中。

不过,在1.7版本之后switch就可以作用在string上了。

补充:1.default是在case全都不匹配的情况。
     2.default放在任意的位置都可以。
     3.没有匹配值的时候default就是进入点,进入default以后会和普通进入点一样,如果没有break继续执行下面语句。
运算符

运算符 & | ^ ~ >> << 讲解

&    按位与
|   按位或
^   按位异或
~   取反
>>   右移
<<   左移
1. &和&&的区别是什么? |和||的区别是什么?
1,当使用“&”时,明确的表示多个条件都判断了,如果在多个表达式中有条件返回了false,剩余的条件也要判断;而如果使用“&&”(短路与),只要有条件返回false,剩余条件不再判断,返回false2,当使用“|”时,明确的表示多个条件都判断了,如果在多个表达式中有条件返回true,剩余的条件也要判断;而如果使用“||”(短路非),只要有条件返回true,剩余条件不再判断,返回true
2. 位运算符的特点是什么?
&是二元运算符,它以特定的方式的方式组合操作数中对应的位 如果对应的位都为1,那么结果就是1, 如果任意一个位是0 则结果就是0,(全11,有00|& 的区别在于 如果对应的位中任一个操作数为1 那么结果就是1(有11,有00^运算符跟 | 类似,但有一点不同的是 如果两个操作位都为1的话,结果产生0(相异为1,相同为0~是对位求反 10011001)
移位运算符移位运算符把位按指定的值向左或向右移动
	举例:2<<1=4   2<<2=8   2<<3=16   4<<1=8
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值