Java 小白第二天

1. 什么是变

变量所承载的内容就是计算机的一些相关数据

例:int age=20; 数据类型 变量名称 = 具体的值;

变量一般存储在内存当中

在java中定义有两种

局部变量:在方法中定义的变量 作用域:方法中访问

成员变量:在类的里面方法的外面定义的变量 作用域:整个类

在java中没有全局变量的说法

在同一作用域内不能出现同名变量

2. 数据类型有哪些

基本数据类型 (1)不是基本数据类型的就都是引用数据类型

 (2)string类型不是基本数据类型 它是唯一一个可以作为常量来使用的引用数据类型

分类:
数值型:

       整数:

byte 字节型 一个字节相当于8个bit 00000001 取值范围-128到127 默认值0

short 短整型两个字节 16个bit 0000 0000 0000 0001
取值范围-32768到32767 默认值0

int 整型 四个字节32个bit 取值范围 -2的31次方到2的31次方-1 默认值0

long 长整型 八个字节 64个bit 取值范围 -2的63次方到2的63次方-1 默认值0L

  常量的整数都是int类型

  常量的浮点数都是double类型

  见到大写的L那么它表示的意思是长整形

浮点数:
    float 单精度 四个字节32个bit 取值范围 -3.40E+38到3.40E+38  默认值0.0
                                    (E表示科学计数法 *10的38次方)

double 双精度 八个字节 64个bit 取值范围 -1.79E+308到1.79E+308

单精度和双精度的区别:

  单精度能表示的有效位数为7位 双精度能表示的有效位数为16位

非数值型:
          字符型 char 只表示一个字符 char =‘a’ 用单引号来表示
                      两个字节 16个bit 取值范围’\u0000’---‘\uffff’默认值 表示unicode码
                       英文一个字节汉字两个字节        默认支持ASCII码 数字0-9 码48到57 
                                                                  大写字母A到Z 码65到90
                                                               小写字母a到z 码 97到122  大小写转换相差32

          布尔类型  boolean true false 一个字节 8个bit 默认值false 

引用数据类型(复合数据类型)

  不是基本类型都是引用数据类型

String字符串最特殊 它是引用数据类型但是能当做常量使用

面试题:为什么string不是基本数据类型

Java中string是个对相关,是引用类型。基础类型和引用类型的区别是,基本类型只表示简单的字符或数字,引用类型可以是任何复杂的数据结构,而string能当做常量用

变量的命名规范:首字母小写

            不能使用java中的关键字

            不能以数字开头

            不能使用标点符号 除了$和_

            驼峰标识

            望文生义

姓名String 年龄int 性别 char 身份证号 String
编号id String int职业 String 金钱double 时间 引用数据类型

数据类型转换:

  1. 数字类型的转换

byte- short- int- long

         int- float- double 

在这里插入图片描述

b1 b2 的值可以变化
b3中知道了具体的值
b4中不知道b1b2相加后是否会超出byte的取值范围
所以会报错
所以要强制转换 byte b4 = (byte)(b1+b2);

char类型也这么用

  1. byte char boolean
    以上三个类型之间不可以互相转换 byte和char类型之间要进行强制转换

char不能往浮点型转 因为char不支持浮点型
在这里插入图片描述

标识符

算数运算符 ±*/ %求于

数字带有负号怎么求于

-7%4=-3

7%-4=3

-7%-4=-3

7%4=3

求于时的负号跟着被除数走

递增和递减

i++ 先运算再+1

++i 先+1再运算

赋值运算符

= 赋值从右至左

+= -= *= /=

a+=b a=a+b

关系运算符 返回值Boolean true false 一般用于判断

大于 <小于 ==恒等 !=不等

if语句 while语句

逻辑运算符

   &逻辑与   两个都是true才返回true  a&b并列关系
       &&短路与 如果a为false  则b表达式不参与运算  直接返回false  

   | 逻辑或      a|b  或者关系 有一个表达式返回true那么整个表达式就返回true
                    两个都返回false则返回false
        ||短路或   如果a为true 则b不参与运算   直接返回true

!逻辑非 !a即b 如果a为true !a为false

^ 逻辑异或 a^b 如果两个表达式的返回值相同则返回false
如果两个表达式的返回值不同则返回true
(相同出0不同出1,但java出false和true)

三目运算符

   具有三个表达式

   Xyz  

x?y:z 判断x的返回值 如果x为true 执行y ,如果x为false 则执行z

位运算和移位运算

  先把数字转换成二进制才能进行运算 运算速度比较快

正数的反码补码与源码相同

负数的源码为正数的源码符号位由0变成1
负数的反码为源码符号位不变其余位0变1,1变0
负数的补码=反码加1

-3的源码 1000 0011
反码 1111 1100
补码 1111 1101

按位与 & 5&13 同位为1时结果为1 否则为0

            101

           1101

           0101    5   (两个都是true才返回true)

两个都是负数的按位与 -6&-7
用补码进行计算最后转换成源码输出

-6源码 1000 0110 -7源码 1000 0111

-6反码 1111 1001 -7反码 1111 1000

-6补码 1111 1010 -7补码 1111 1001

  1111 1010

  1111 1001

  1111 1000 这是补码   转源码

1111 0111

  1000 1000   -8

其中一个是负数的按位与 -5&7 负数用补码 正数用源码 输出不用转换

逻辑与和按位与的区别:

 &&是逻辑与 即判断&&两侧的表达式是否都为真,都为真则此&&表达式为真

 &是按位与 即将&两侧的数用二进制展开,每一位都求与运算,最后得到的二进制数为结果。


 逻辑与结果只将真和假,而按位与得出的是实实在在一个数

按位或 | 同位 参与运算的两数各对应的二个二进制位有一个位1时,结果位就为1

5|13

101

1101


1101 13

其中一个数是负数的按位或 -5 | 7 负数用补码
正数用源码 最后输出要转换成源码 符号位不变

      -5源码 1000 0101     7的源码 0000 0111
     反码1111 1010
      补码1111 1011

1111 1011

0000 0111


1111 1111 转反码(-1) 1111 1110 转源码1000 0001 -1 符号位不变

两个数都是负数时 -5 | -7

-5源码1000 0101 -7的源码 1000 0111

反码1111 1010 反码 1111 1000

补码1111 1011 补码 1111 1001

1111 1011

1111 1001


1111 1011 转为反码(-1)1111 1010 转源码 1000 0101 -5

按位异或 两个不同时为1

5^13

101

1101


1000 8

有一个数为负数时 7^-5 最后结果补码转换为源码

两个数都是负数时 -7^-5 最后结果不用转换

按位与 其中一个是负数 不转 两个都是负数 要转

按位异或 其中一个是负数 要转 两个都是负数 不转

按位或 两种都转

移位运算

<< 左移 a<<b 将数据a左移b位 右边的数字补0 越左移数字越大

       System.out.println(2<<4);

System.out.println(3<<4);
10 0000 22的4次幂
11 0000 3
2的4次幂

右移 越右移数字越小

  a>>b 

2>>4 2*2的-4次幂

3>>4 3*2的-4次幂 移的数是奇数时还是转换成二进制计算因为会除不尽

负数的左移<< -9<<1 -9*2的1次幂

           -9<<2  -9*2的2次幂   

负数的右移>> 将补码进行右移 再反成反码再反成原码

-9>>1

-9源码:1000 1001

-9反码:1111 0110

-9补码:1111 0111

右移补码后

补码:
1111 1011

反码:
1111 1010 补码变反码减1

源码:
1000 0101 -5

无符号右移 按位右移补零操作符
左操作数的值按右操作数指定的位数右移,移动得到的空位以0填充。

    A=60        A>>>2 即
          0011 1100---0000 1111

在这里插入图片描述

三目运算符
条件运算符是右结合的,也就是说,从右向左分组计算。

例:a?b:c?d:e将按a?b:(c?d:e)执行 先算括号里再算外层

Java中保留的关键字
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值