java学习笔记day02

Java语言基础

关键字
标识符

由26个字母,数字,以及两个符号_$组成

命名规则:数字不可以开头,不可以用关键字

注释

单行注释://直到一行结束

多行注释:/*内容 */

文档注释:java所特有的,/**内容 */,可以用java工具提取

注释可以用来缩小程序bug的范围,注释不占class文件的字节

java程序都是以类的形式存在的

常量与变量
常量的分类
  • 整数常量
  • 小数常量
  • 布尔型常量(True or Fales)
  • 字符常量 一个数字、字母或者符号用单引号标注
  • 字符串常量 将一个多个字符用双引号标注
  • null常量

八进制用0开头,十六进制用0x开头

10101110-----0256(八进制)
10101110----0xAE(十六进制)

1byte(字节)=8个二进制位(bit位)

变量

概念:

  • 内存中的一个存储区域
  • 该区域有变量名和类型
  • 区域内的数据在同一类型范围内可以不断变化

基本数据类型:

  1. 数值型
  • 整数类型 byte(一两的碗/8bits,-128~127);short(二两);int(四两);long(八两)

超出数据类型的范围可能会损失精度(用一两的碗盛二两的米饭,称之为溢位)

负数的表示:首位取0 ;如10000101表示-5

  • 浮点类型
    float(32bits);double(64bits,默认,精确度更高)
  1. 字符型 char(值域为0~65535,两个字节,值可以为字符,一个中文为两个字节)
  2. 布尔型 boolean

定义变量:数据类型 变量名=初始值

  • eg:byte b=3
  • short c=2000
  • long n=1222343553l(数值很大时最后要以字母l结尾)
  • float m=2.3f(因为小数默认为double型,所以float命名最后要加f)
  • double e=2.24
  • char k=‘ch’;char xy=‘12’(注意要用英文符号)
  • boolean b=true
自动类型提升

不同数据类型之间可以运算的前提是两者都是数值

int x= 3;
byte b=5;
x=x+b;
将byte类型提升为int,称为自动类型提升,这里x为四两的碗,x+b为四两的饭,不会溢位
强制类型转换
int x=3;
byte b=5;
b=x+b;
这里b为一两的碗,容纳不了四两的饭(x+b)
我们要进行的操作是 b=(byte)(x+b);称为强制类型转换

Tips:

  1. 尽量不要强制类型转换,可能丢失数据
  2. ‘a’+1=98,why?
    ASCII表中a表示为97,A表示65,汉字也有对应的数字,参照unicode国际标准码表
  3. 一个有趣的小细节:
byte b=4;
b=3+4;
运行程序b=7,没有问题
byte b1=3;
byte b2=4;
b=b1+b2;
报错:可能损失精度
原因:b1,b2的取值不确定,若b1+b2>127,则会超出byte所能容纳的范围,将它赋给b会损失精度。
  1. int x=Integer.MAX_VALUE;可以查出int取值范围的最大值
原码、反码和补码
  • 原码:在数值前加一个符号位的表示法
    (+5)00000101;(-5)10000101
  • 反码:
    正数的反码和原码相同;
    负数的反码,符号位为1,数值部分取反,(+0)00000000;(-0)11111111
  • 补码:

补码是一种循环计数系统,类似于钟表,模就是循环计数系统中所表示的最大数,对于8位二进制数,模为256。

举个例子(-6)和(250)对模256互为补数,同余数。也就是说-6的补码就是250的二进制形式,即1111 1010。
正数的补码为原码,负数的补码为:负数的原码符号位不变,数值位取反后+1。

补码可以将减法转换为加法运算。
eg.求37-23?化为37+(-23),求出37和-23的补码进行加法运算,可以得出正确结果。关于补码更加详细的解释见:https://blog.csdn.net/studyvcmfc/article/details/7605752

运算符
  1. 算术运算符 + - * / %(取余,模运算) +(连接符)
int x=6345;
x=x/1000*1000;
x=6000,因为6345/1000=6.345,计算机会把小数部分去掉
5%2=15%-2=12%5=2
System.out.print(3+"2");--->32,这里的+表示连接符
又如:System.out.print("5+5="+5+5)--->5+5=55,过程是这样的,“5+5=+5+5-->5+5=5+5-->"5+5=55"-->5+5=55

++(自增运算):

int a=3,b;
b=a++;--->a=4,b=3
b=++a;--->a=4,b=4
原理:a在前面则先将a赋给b,++在前面则先进行自增运算。
代码解释如下:
b=a++;
temp=a; //将a原来的值3存到一个临时变量里
a=a+1; //然后a进行自增运算结果为4
b=temp; //将临时变量的值3赋给b.
  1. 赋值运算符
    (= 、 += 、-= 、 *= 、 /= 、 %=)
short a=3;
a+=4;----->a=7
a=a+4;----->报错,可能损失精度,原因还是可能发生溢位,a+=4可以运行是因为+=是一次赋值运算,会做自动类型转换,类同于short a=3也进行了类型转换
  1. 比较运算符

运算完的结果为true or false

System.out.print(3>2);---->true
  1. 逻辑运算符(用于连接两个boolean类型的表达式)

①&:与 (判断,一假为假)

②|:或(一真为真)

③^:异或(相同为假,不同为真)

④!:非

⑤&&:双与(判断方式与单与一样,唯一区别左边为假时右边直接不运算)

⑥||:双或(判断方式与单或一样)

  1. 位运算符

&(6&3=2)

|(6|3=7)

^(6 ^ 3=5;6 ^ 3 ^3=6)

。<<:左移(相当于乘以2的倍数)3<<2=322=12(右移两位,乘以2的2次幂)

。>> :右移(相当于除以2的倍数)3>>1=3/2=1

。>>>:无符号右移(同上)

练习

如何高效地运算2*8?
2<<3(位运算更高效)

对两个整数变量的值进行互换

int a=3,b=5,c;
c=a;
a=b;
b=c;(使用第三方变量)
或者
a=a^b;
b=a^b;
a=a^b;(利用两次异或同一个数会变成原来的数)
  1. 三元运算符
    (条件表达式)?表达式1:表达式2;如果条件为true,运算后的结果是表达式1,反之为2.
int x=3,y=4,z;
z=(x>y)?x:y;

如何获取三个整数中最大的整数?

int a,b,c;
int temp = a>b?a:b;
int max = temp>c?temp:c;

2019/7/14

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值