1.Java简介和数据类型和运算符

JDK JRE JVM
  • JVM(Java Virtual Machine)虚拟机:使用软件在不同操作系统中,模拟相同的环境。
  • JRE(Java Runtime Environment)运行环境:包含JVM和解释器,完整的Java运行环境。
  • JDK(Java Development Kit)开发环境:包含JRE + 类库 + 开发工具包(编译器+调试工具)。
注释
// 单行注释
/* */文本注释
转义符

\t \n \ ’ \ "

转义符要用\号

System.out.println("海贼王、\"");
System.out.println("海13456\t\"贼\"78\t王");

输出:
海13456 "贼"78  王
海      "贼"    王

用\t转义符可以很好输出整齐的格式

  • 注意了,经常没有加上";“号和字符串输出中的”+"号;

基本数据类型(八大数据类型)

整数: byte short int long 一般输出整型默认位int型

浮点数: float double 一般浮点型默认为double型

布尔型: boolean

字符型: char

能有后缀名的有 long, float, doubt

可以用16进制+L

long num1 = 123456L;
float num2 = 123456F;
double num3 = 123456d;
long l = 1000;可以
float f = 1000;可以
float f1 = 1000.0不可以 
原因:1000默认为int型,可以转成float型,但1000.0默认为double,转成float会有损失
整型
image-20210713191933490

整型一般默认为浮点型

byte b1 = 56;
byte b2 = 135;
System.out.println(b1);
System.out.println(b2);

可以看b2的取值大于了其范围了,这时候会报错

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DSsYvLxo-1639058773856)(C:\Users\31386\AppData\Roaming\Typora\typora-user-images\image-20210713192148136.png)]

在这里强行大转小,会出现损失 后面short int 也一样

byte b2 = (byte)135;
输出结果: -121

注意:在赋值阶段,如果所赋的值在其定义类型里(如 byte num = 5),那没问题,但如果赋值大于其范围,那只能强行转换 (如 byte num = (byte)135)

浮点型
image-20210713193801732

浮点型默认为double 与 int 不同 byte、short 中只要符合其范围即可赋值,浮点型要声明其赋值才可

(float f1 = 1546.3164f)

字符型
image-20210713194146604
char c1 = 'a';
int i2 = c1;
double d2 = (double)c1;
System.out.println(c1);
System.out.println(i2);
System.out.println(d2);

输出:
a
97
97.0

注意:char a = ’ ‘在单引号间只能放一个英文、一个中文、或一个数字,在没有’'时,只能输入数字,在超出范围时,输出为? 其对应的赋值可以转换成其他形式如整型、浮点型,具体看上面。在char中,char字符可以转成整型int(不用强转), int、long可以接收char,但short、byte不行,也可以直接转成float、double型

int a = 3 + '5';   //结果为56
char b = 3 + '5';  //结果为8
布尔型
image-20210713194839701

基础数据类型可以互相转换,除布尔型外

运算符

加减乘除 + - * / %

37.2%10 结果为7.2000000,注意只除到整数

会根据类型不同而输出不同的类型

  • **整型与浮点型+ - / * 输出结果为浮点型 **
  • int + short(或者byte) = int
  • int + long = long
  • char + int = int
  • char + short(或byte) = int
  • char 可以转为 int,但int 转不成char
  • float + int = float

以此类推

整型运算操作会直接转换成int类型

short s1 = 32767;
short s2 = 32767;
short s3 = s1 + s2;
System.out.println(s3);

结果:不兼容的类型: 从int转换到short可能会有损失
                short s3 = s1 + s2;

s1加上s2已经超出了short大小了,会转成int型


short s1 = 1;
short s2 = 2;
short s3 = s1 + s2;
结果:
Error:(7, 23) java: 不兼容的类型: 从int转换到short可能会有损失


short s = 1;
short c = s + 1;

报错:
错误: 不兼容的类型: 从int转换到short可能会有损失
                short c = s + 1;
                
要改为:
short c = (short)(s +1);
System.out.println(c);

注意:
short c = s +(short)1;
不行,因为他要先计算,后面才转型,这样冲突了

short s = 1;
short s1 = s + 1;  //报错
s = s + 1 ;   //报错
s += 1 ;成功

s = s + 1,在s + 1的时候,结果会被“升格”为int类型。将int高级类型转为低级类型,需要强制转换,所以自然编译不会通过.

s += 1 对于“+=”操作,jvm会自动执行类型操作,等价于 s = (short)(s + 1)

num += 1

num -= 1

num *= 1

num /= 1

和num = num + 1一样

自动类型转换

Java自动的隐含的将每个byte、short或char操作数提升为int类型

如果有一个操作数是long类型,就将整个表达式提升为long类型;

如果有一个操作数是float类型,就将整个表达式提升为float类型;

如果任何一个操作数为double类型,结果将为double类型。

long + double = double

例子1   Java自动的隐含的将每个byte、short或char操作数提升为int类型
short s1 = 5;
short s2 = 6;
short s3 = s1 + s2;
//byte + short = int等等
//short + short = int
image-20210716125740872
关系运算符

布尔型 boolean

== !=

> , < , >=, <=

一目运算符

++a a++

–a a–

前++为先++后执行 后++为先执行后++

(重点)综合性运算结果
int num1 = 6;
int num2 = 6;
num1 += num1*10 + (++num1) + (num1++);

num1 = num1 + num1*10 + (++num1) + (num1++);
        6        60         7         7
结果:80
-----------------------------------------------------
num2 +=  (num2++) + num2*10 + (++num2);

num2 = num2 + (num2++) + num2*10 + (++num2)
		6        6          7*10       8
结果:90

这两个练习

//解方程解出 num3 和 num4
int num3 = (num1++)+(++num1)+num1*10;

int num4 = num2*10+(num2++)+(++num2);
		
		System.out.println("num3:"+num3);//94
		System.out.println("num4:"+num4);//74

当运算过了自己后i++就会生效, 像 (a++) + a,实际等于a + (a+1)

三目运算

关系表达式?表达式1:表达式2

当关系表达式结果为true的时候,总结果为表达式1,当关系表达式返回false的时候,总结果为表达式2

int a = 100;
int b = 80;
int max = a>b?a :b;
System.out.println(max);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值