java基础知识2

常量

定义:在程序执行过程中其值是不变的;

  • 字符串常量:用双引号括起来的内容;
  • 整数常量:所有整数;
  • 小数常量:所有小数;
  • 字符常量:用单引号括起来的内容,里面只能放单个数字、单个字母或单个符号(‘10’ 错误写法);单引号中什么也不放也是不行的,因为代表不了任何内容(‘’ 错误写法);(‘ ’)加个空格是可以的;
  • 布尔常量:只有true和false;
  • 空常量:null;

进制

  • 星星和月亮,月亮和太阳的进制:四进制(QQ等级);
  • 十进制的由来是因为人类有十个手指;
  • 厂商的500GB硬盘实际没有500GB,是因为它是以1000为单位而不是计算机中的1024为单位,所以它的500GB=500*1000(M)*1000(K)*1000(B)/1024(K)/1024(M)/1024(G)约等于实际的465GB(按1024算);
  • 进制越大表现形式越短;

不同进制数据表现形式

  • 二进制的数据表现形式:由0,1组成,以0b(b可以大写也可以小写)开头(JDK1.7版本可以表示二进制了);
  • 八进制的数据表现形式:由0,1…,7组成,以0开头;
  • 十六进制表现形式:以0x(x可以大写也可以小写)开头;

任意进制到十进制的转换

  • 系数*基数的权次幂相加即可
    任意进制到十进制的转换

十进制到任意进制的转换

  • 除积倒取余
    十进制到其他进制

原码反码补码

  • 原码:最高位为符号位,0为正,1为负;通过一个字节,也就是8个二进制表示+7和-7;
  • 反码:正数的反码与其原码相同,负数的反码是对其原码逐位取反,但符号位不变;
  • 补码:正数的补码与其原码相同;负数的补码是在其反码的末位加1;
  • 运算的时候都是以补码的形式进行运算的;
  • 补码转原码:补码减1再取反;

java数据类型

  • 基本数据类型:整数型、浮点型、字符型、布尔型;
  • 引用数据类型:字符串、类、接口、数组;

基本数据类型

整数型

  • byte:占一个字节,-128~127(记住);
  • short:占两字节,-2^15 ~ 2 ^15-1;
  • int:占4字节,-2^31 ~ 2 ^31 -1;
  • long:占8字节,-2^63 ~ 2 ^63 -1;
    注意: 如果long类型后面加L进行标识最好加大L,因为小L太像1了;

浮点型

  • float:占4字节,单精度;-3.403E38 ~ 3.403E38
    注意: float类型想要表示小数,必须在小数后面加上fF.
  • double:占8字节,双精度;-1.798E308 ~ 1.798E308(小数默认数据类型,double后面的d或D可加可不加)
float f=1.23f;  //加上f是为了防止精度错误,因为默认是double类型的
double d=1.23;

字符型

  • char:占两字节,0~65535,注意取值没有负数

布尔类型

  • boolean:理论上占八分之一个字节,因为一个开关就可以决定true和false了,但是java中的boolean类型没有明确指定它的大小;(记住)

数据类型转换之隐式转换

小的转大的;
当小的数据类型和大的数据类型进行运算时,小的数据类型会被转换成大的数据类型。

数据类型转换之强制转换

大的转小的;
注意:如果超出了被赋值的数据类型的取值范围,得到的结果会与你期望的结果不同。

int a=20;
byte b=110;
b=(byte)(a+b);
//此时得到的b值为-126,而实际为130
//00000000 00000000 00000000 10000010      130的二进制
//10000010                                                         -126的补码
//10000001                                                         -126的反码
//11111110                                                         -126的原码

变量相加和常量相加的区别

变量相加

byte b1=3;
byte b2=4;
byte b3=b1+b2;
//这是错误的,可能损失精度。
/*
从两方面解释原因:
1.byte与byte(或short、int)进行运算时会提升为int,两个int型的相加结果还为int。而b3为byte类型
2.b1和b2是两个变量,变量存储的值是变化的,在编译的时候无法判断里面具体的值,相加有可能会超出byte的取值。
*/

常量相加

byte b3=3+4;
byte b4=7;
//这是正确的
/*
这是因为:**java编译器有常量优化机制**。编译器在编译时直接判断3+4在byte取值范围之间,而上面所说的变量时无法在编译时进行判断的。
*/

long与float的取值范围谁大谁小

  1. 进行混合运算的时候,byte,short,char不会相互转换,都会自动将类型提升为int类型进行运算,其他类型进行混合运算的时候是小的数据类型提升为大的,比如:int类型和long类型进行运算时,int类型提升为long类型。
  2. byte,short,char – int – long – float --double
  3. long:8个字节
    float :4字节
    但为什么float的取值范围更大呢?
    A:它们底层的存储结构不同
    float:1位符号位;8位是指数位(-126~127)
    B: float表示的数据范围要比long的范围大

字符与字符串参与运算

System.out.println('a' + 1);            //98 ,因为有ASCII码表,a字符对应的是int类型的97
System.out.println((char) 'a' + 1);   //   b

System.out.println("hello"+'a' + 1);  //任何数据类型用+与字符串相连都会产生新的字符串
System.out.println('a' + 1+“hello”);  //98hello

char数据类型

char c1=97;    //char取值范围:0-65535(编译时判断)
System.out.println(c1);  //a

//char可以存储中文
char c2=‘中’;
//只能存储一个汉字
//因为java语言采用的是Unicode编码。Unicode编码中的每个字符占用两个字节。中文也是占用两个字节。

算术运算符

  • +号的三种作用:代表正号、做加法运算、字符串的连接
  • 整数相除只能得到整数。如果想得到小数,必须把数据变化为浮点数类型(10/3.0)
  • %运算符:
    1)当左边的绝对值小于右边的绝对值时,结果是左边;
    2)当左边的绝对值等于右边或是右边的倍数时,结果是0;
    3)当左边的绝对值大于右边的绝对值时,结果是余数;
    4)%运算符结果的符号只和左边有关系,与右边无关;
    5)任何一个正整数%2结果不是0就是1可以用来当做切换条件;

算术运算符++和–的用法

  • 单独使用
    放在操作数的前面和后面效果一样。
  • 参与运算使用
    1)放在操作数前面,先自增或者自减,然后在参与运算;
    2)放在操作数后面,先参与运算,再自增或者自减;
int a=3;
int b=a++; //b=3,a=4;
int c=++a; //c=4,a=5;
int x=4;
//  y=   4     +    6     +  6*10
int y=(x++) + (++x) + (x*60)   //x=6,y=70
byte b=10;
b++;   //不会报错 ,b=(byte)(b+1),++底层会自动加上强制转换
b=b+1; //报错
//原因:当byte与int 进行混合运算时,会提升为int类型,两者想加仍为int型,赋值给byte会损失精度,所以要加上强转。

赋值运算符

= 、*= 、/=、+=…

short s=1;
s=s+1;//报错,当short与int 进行混合运算时,会提升为int类型,两者想加仍为int型,赋值给byte会损失精度,所以要加上强转。
s+=1;//不会报错,s=(short)(b+1),++底层会自动加上强制转换

关系运算符

==、!=、>=、<=、>、<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值