Java基础之进制,常量,变量,运算符

常量
      在程序的运行过程中,其值是不可以发生改变的量。
     常量的分类:
             
字面值常量
                    整数常量12,-23
                    实数常量12.5,-65.43
                    字符常量'a','A','0'
                    字符串常量"hello"
                    布尔常true,false
                    空常量null
               自定义常量(后面讲)
                    final
   常量可以直接被输出



进制
电信号有两种方式,开和关。但是生活中的很多数据都装载不下。所以制定了用八个开关表示一个数据,后来用数据改进,1表示开,0表示关
     是一种进位的方式。X进制,表示逢x进1。
     Java中整数常量的表示
          1:二进制 由0,1组成,以0b开头,JDK7以后的新特性
          2:八进制 由0-7组成,以 0开头
          3:十进制 由0-9组成,默认就是十进制
          4:十六进制 由0-9, A-F(不区分大小写)组成,以0X开头

其它进制转换为10进制
     系数:每一位上的数据
     基数:?进制转换到10进制,基数就是?
     权:从右面数,对应位上的编号就是该位的权
     结果:系数 * 基数的权次幂结果相加
     037 --> 31
     0X56B --> 1387
     101101 --> 49

     2的1次幂 2
     2的2次幂 4
     2的3次幂 8
     2的4次幂 16 
     2的5次幂 32
     2的6次幂 64
     2的7次幂 128
     2的8次幂 256
     2的9次幂 512
     2的10次幂 1024

10进制转换其他进制
     除基取余,直到商为0,余数反转


进制转换快捷方式
十进制二进制互相转换的快捷方式
128     64     32     16     8     4     2     1
     十进制 --> 二进制
          6     -->     110
          34     -->     100010
     二进制 -->十进制
             10010     -->     18
             10011     -->     19

二进制和八进制十六进制相互转换
                二进制--八进制(3位组合)
            二进制--十六进制(4位组合)




原码反码和补码
在计算机中,数据都是以补码的形式存在的
     原码:最高位是符号位,其它位是数据位。0表示正,1表示负。
     反码:正数的反码和补码相同,负数的反码除了符号位,剩下的数据位取反。1->0     0->1。
     补码:整数一样,负数的话反码+1

1+(-1)无论怎么运算,都要先转换为补码, 符号位也参与运算
补码:00000001
补码:原码1000 0001 --> 反码1111 1110 -->补码1111 1111

     0     0000001
+   1     1111111
————————
    10     0000000
                           


数据类型
byte     1byte     -128 到 + 127     
short     2byte     -2^15 到 +2^15-1
int     4byte     -2^31 到 +2^31-1
long     8byte     -2^63 到 +2^63-1
float     4byte     -3.403E38 到  3.403E38 ( 科学表示法      e表示10 38表示次幂
double     8byte     -1.798E308 到  1.798E308  
     
在使用数据类型的时候,需要考虑占内存少的
整数默认int,小数默认double
定义数据类型时候,float和long需要注意             
char里面能写中文就是因为java用的是unicode编码表,占两个字节

数据类型转换
    自动类型转换(隐示转换)
          1.类型兼容(boolean类型不能参与转换)
          2.目标类型大于原类型(精度低的向精度高的转换)
          3.byte short char -->int-->long-->float-->double
          
     强制类型转换(显示转换)
          1.类型兼容( boolean类型不能参与转换
          2.目标类型小于原类型(精度高的向精度低的转换)

面试:
     byte b = (byte)300;
     原码:00000000 00000000 00000001 00101100     转换为byte      00101100
     反码:00101100
     补码: 00101100
     值:44
     
      byte b = (byte)130;
     原码:00000000 00000000 00000000 10000010     转换为byte  10000010
     反码: 11111101
     补码:11111110
     值:-126,因为最高位数为1,代表负数,所以不要参与运算
          
面试:
     byte b = 1;
     byte b2 = 2;
     byte b3 = b + b2;
     byte b4 = 1 + 2;
byte b3 = b + b2不行,因为如果等式的右面表达式为变量时,先会转换为int类型,然后在赋值给左变的变量。这时,精度高的给精度低的赋值赋不进去,报错。
而当等式的右面表达式为常量时,先进行运算,在判断值是否在数据类型的接收范围内

面试:
      byte b = 127;
     b += 1;

127
补码                                               01111111(因为是byte类型)
+                                                   00000001
---------------------------------------------------
                                                     10000000(特殊?!)


                                                               

位运算符


面试
int a = 1;
int b = 2;
交换变量异或
     a = a ^ b;     a = a ^ b;
     b = a ^ b;     b = a ^ b ^ b = a
     a = a ^ b;     a = a ^ b
交换变量
     a = a + b;     a = 1 + 2
     b = a - b;     b = 1 + 2 - 2 = 1
     a = a - b;     a = 1 + 2 - 1 = 2

位移运算


面试题
        3 * 8 = ? 效率最高?  必须有一个数符合2的次幂吗?






  
变量概述
变量是一个数据存储空间的表示
变量的声明
1.数据类型 变量名; 变量名 = 值;

2.数据类型 变量名 = 值;


标示符的命名规范
帕斯卡pascal:开头字母大写,其它,每个开头字母都大写(SelectInfomation)

驼峰标示Camel:首字母小写,其它,每个开头字母都大写(selectInformation)

匈牙利:将数据类型的简写作为开头,(iAge,strName)

涉及到缩写的全部大写:USA SOS


标示符的命名规则
字母大写的A-Z到小写的a-z,数字0-9(不可以作为开头)加下划线和美元符号,不可以有关键字,不可以有特殊字符


运算符
赋值 = 

算数 + - * / %(小 % 大 = 小)

关系 > >= < <= == !=

逻辑 & | && || !^

三元表达式 条件表达式 ? 表达式1 : 表达式2;


数据类型自动转换
1.类型兼容

2.目标类型大于原类型
强制转换
精度高转为精度低的需要强转(double -> int)








Scanner
import java.util.Scanner;
public class Test
{
       public static void main(String[] args)
      {
            Scanner input = new Scanner(System. in);
             if (input.hasNextInt())
            {
                   int number = input.nextInt();
                  System. out .println("限制输入了int类型:" + number);
            }
             else
            {
                  System. out .println("请输入整型!" );
            }
      }
}
if如果
if else如果 否则
randomint random = (int)(Math.random * 10);
switch接受类型 byte short int char,可以在case后面不加break(*C#混淆)
JDK7版本之后出现了String
while,do whilewhile-先条件,在循环。do-while-至少会执行一遍

for
for(int x=1; /*1*/ x<=10; /*2*/ x++/*4*/ )
{
     System. out.println("循环体" );/*3*/
}
break停止,跳出循环
continue绕过本次循环,进行下次循环
 
break:
     终端,跳出,结束
     跳出的是所在的循环
     单独存在时,下面的语句没有意义
continue:
     继续,绕过
     单独存在时候,下面不要放语句

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值