1.基本数据与计算

导论

0.软件

1、概念:指一系列按照特定顺序组织的数计算机数据与指令的集合

     数据:能够被计算机识别的东西,在硬盘中以文件形式存在

     指令:对数据进行的相关操作

2、分类

系统软件:主要负责控制和管理计算底层硬件,为用户提供最基本的计算机功能,也是专门用于运行其他应用程序的平台。

应用软件:主要处理特殊领域问题的软件,为用户提供更多专项的计算机功能,基于系统软件才能实现。

正文

一、关键字

被赋予了特殊含义的单词,不能随便使用,关键字的字母全为小写(如class、pubic、static、void)

那么String、System不是关键字,是Java自带类的名称,也不能随意使用。

二、标识符

在写代码的过程中自定义的名称(变量名、类名、函数名、接口名)

特殊:main也算是标识符,但是被写死了

组成规则:

(1)由字母、数字、下划线_、美元符$组成

(2)数字不能开头

(3) 严格区分大小写

(4)不可以使用关键字和Java的自带类名称

   ps:尽量起有意义的名字,提高阅读性

组成规范:

(1)小驼峰式命名法:有多个单词组成一个词,除了第一个单词首字母小写 ,其余单词的首字母大写 myName、yourPen;主要应用:变量名、函数名

(2)大驼峰式命名法:所有单词的首字母都大写,应用:类名、接口

(3)全大写命名法:全大写。单词与单词用下划线连接(MAX_VALUE)应用:常量

三、注释

存在意义:代码过多情况下,会遗忘一些,起到提示的作用,不属于代码范畴

分类:

  1. 单行注释(//...........)直到换行为止
  2. 多行注释(/*........*/)第一个*注释开始,第二个*结束
  3. 文档注释(/**..........*/)可以通过文档注释制作程序说明书

 

javadoc.exe工具制作程序说明书

PS:单行里面可以套多行

         多行里可以套单行

         多行不能套多行

四、常量与进制

常量:在程序中直接出现的数据,数据本身不能被改变

分为:

(1)整数

   二进制、八进制、十进制(一般)、十六进制

   二进制:也是一种计数方式 逢2进1

   二进制:0 1 10 11 100 .......

   十进制:0 1 2 3 4 .......

二进制转十进制:

十进制转二进制

二进制转八进制以及八进制转十进制

 

二进制转十六进制以及十六进制转十进制

负数二进制表示(取反加1)重新看看

二进制0b开头 八进制0 十六进制0x开头

(2)浮点数

  一般小数 3.14

  科学计数小数 3.89e3=3.89*10^3

(3)字符

由一个数字、字母、符号被单引号包含的数据

 

报错

单引号里面必须有数据,空格也行

(4)字符串

由一个或多个数字、字母、符号被双引号所包含 的数据

双引号里面没数据也行,称为空串

(5)布尔类型

 只有true false 表示真假

 true false 是关键字的一种,表示确切的某个值

(6)空

 null 关键字

五、变量与数据类型

1、变量:本身可以改变的数据

变量的出现可以解决重复性数据更迭问题

在计算机计算的过程中,为方便调用临时的数据,则用变量将其存储起来

本质就是在内存之中某一个进程里的一个临时存储区域

每一个变量空间在创建的时候都会被随机的分配地址(真实的物理内存地址)

变量空间中的数据在变化的过程中必须保持是可兼容的(至少是同一类型的)本来是整数,变其他如布尔,则不是同一类型

 

如果直接在代码中用变量的物理地址去访问空间中的数据,可能访问不到

为了避免地址的不确定性,引入了变量名这个概念。

变量空间的地址,其实就是C里面的指针

 

常量都在常量池当中,变量空间存的就是常量在常量池中的地址。

 

 

int a = 5;
double b = 5.00
System.out.println(a==b);    true
//a int 两边类型不同,a自动变double再和b进行了比较 
//把b转int
System.out.println(a==(int)b); 
System.out.println(a+b);       10.0

具体看下C指针

&取地址的意思

如何定义变量

(1)数据类型 变量名=常量

(2)数据类型 变量;

变量=常量;

2、数据类型

  目的:

  • 为了限制当前变量当中存储的数据,变量当中的数据必须是可兼容的
  • 为了限制当前变量空间的大小。

数据类型的分类:

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

  • 整数(byte、short、int、long)

        byte 1字节

        2^8=256个数据可用 范围(-128至127 -2^7至 2^7-1)

     (1字节=8bit 比特位 )

       short 2字节

        2^16=65536 范围(-32768至32767 -2^15至 2^15-1)

        int 4字节 (-2^31至 2^31-1)

        long 8字节 (-2^63至 2^63-1)

测试代码

class Test1{
    public static void main(String[] args){
         /*
        00000000 00000000 00000000 01100100
                                   01100100
        4两的碗 里面放了不到1量的饭
        装到1两的碗里,能放下
        因为整数常量100的有效数据可以直接放入byte里面
        所以计算机将常量100之前的所有空的字节 阉割了
        向下自动类型转换int->byte 从大字节到小字节
        */
        byte b1 =100;
        System.out.println(b1);  //100
         /*
        00000000 00000000 00000001 00101100
                                   00101100
        4两的碗 里面放了1两多的饭
        装到1两的碗里,放不下
        先去尝试着去向下自动类型转换
        如果你想强行的将300放到byte中-强制类型转换
        强转一定是从大到小的!
        */
        byte b2 =300;
        System.out.println(b2);//报错,不兼容的类型:从int转换到byte可能会有损失
        //强转 
        byte b3=(byte)300;
        System.out.println(b3);//44  前面的丢失只留下00101100
        /*
        对于b6而言 它的后面跟着的是两个变量
        b6不能确定 b4 b5变量的值
        对于整数之间进行加法运算时,得到的值是int值
        */
        byte b4=3;
        byte b5=7;
        byte b6=b4+b5;//得到是int值
        System.out.println(b6);//报错,不兼容的类型:从int转换到byte可能会有损失
        //强转
        byte b4 =3;
        byte b5 =7;
        byte b6 =byte(b4+b5);
        /*
        00000000 00000000 00000000 11001000
                                   11001000
        11001000 -1 
        11000111 取反 
        00111000 56  -56
        */
        byte b4=100;
        byte b5=100;
        byte b6=byte(b4+b5);//-56 
        //short部分
        short s1=3;
        short s2=7;
        //报错 原因同上 除非强转
        short s3=s1+s2;
        //强转
        short s3=(short)(s1+s2);
        System.out.println(s3);
        //int
        int i1=3;
        int i2=1;
        int i3=i1+i2;
        //此处为什么没有报错?左边右边都是int 无转换
        System.out.println(i3);//4
        
        int i4=Integer.MAX_VALUE;//表示int类型 的最大值 2147483647
        int i5=i4+i2;
        /*2147483647二进制
          01111111 11111111 11111111 11111111  加一
        0 10000000 00000000 00000000 00000000   最开始的零为符号位,溢出去了,忽略
          10000000 00000000 00000000 00000000   1表负数,故需要进行减1然后取反
          01111111 11111111 11111111 11111111   减1 
          10000000 00000000 00000000 00000000   取反  故i5为-2147483648
        */
        System.out.println(i5);//整型溢出 
        //long
        long l1 =300;
        long l2 =300;
        long l3 =l1+l2;
        System.out.println(l3);//600 long8字节 
        //整数常量默认为int 此时已经超了int的值了
        //再大超出long的范围,解决办法BigInteger BigDecimal两个类去解决,之后介绍
        long l4 =123456789123123;
        System.out.println(l4);//报错 过大的整数 整数常量后面加L就变为long常量
        
    } 
}

 

  • 浮点数(float、double)

      float 4字节

      double 8字节

浮点型常量默认是double类型

 

public class Test2{
    public static void main(String[] args){
        //浮点型常量默认是double类型
        //double类型向float转换可能会有损失
        //解决办法  float f =3.14F;
        float f =3.14;
        System.out.println(f);//报错
        double d1=3.14;
        double d2=3.14
        System.out.println(d1+d2);//6.28
        /*
        byte+short=short 以此类推,在整数/浮点数变量之间进行运算的时候,
                        小字节+大字节=大字节
        大小:byte->short->int->long->float->double
        */
    }
}

 

  • 字符(char)

       char 2字节

       取值范围:0-65535 指的就是字符编号

在计算机当中存储字符的方式:

public class Test3{
    public static void main(String[] args){
        /*
        在打印这个字符变量的时候,前去码表中编号相对应的字符再打印
        */
        char c1=97;//代表将一个字符编号给字符变量
        System.out.println(c1);//a
        
        char c2='A';//将一个字符常量给字符变量,那么直接打印
        System.out.println(c1);//A
        //字符变量在参与运算时,是以编号身份参加
        char c3 ='a';
        System.out.println(c3+1);//98   小加大int
        //查看'我'这个字符的编码
        System.out.println('我'+0);
        //查看'我'后面的字符
        System.out.println((char)('我'+0));//强转  转char
        
    }
        
}

常见字符编号:

'a' 97

A 65

'0' 48

 

  • 布尔(boolean)

     只允许取值true或false

     如果boolean是一个变量的话 1字节

     如果boolean是一个数组的话 每个空间是4个字节

根据数字取值范围进行划分的基本数据类型

(2)引用数据类型:

字符串、null、数组、对象

六、运算符

  1. 算数运算符
  • + 加法运算

         如果+号的两边都是数字的话,那么这个+表示的数学上的加法

         如果+号的两边,只有有一个字符串,那么这个+表示的是字符串连接符

  • - 减法运算
  • * 乘法运算
  • / 除法运算

      如果两边都是整数 结果就是整数(整除)

     如果两边至少存在一个小数,结果就是小数

  • % 取余运算

    相当于是整除运算,但是得到的结果是余数

  • ++ 自加运算

    前++ ++i i本身直接+1再参与运算

    后++ i++ i先参与运算再本身+1

  • -- 自减运算

注意:

(1)如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。但若被模数是负数那就另当别论;

(2)对于取模运算m%n:

  • 当m等于n时,结果为0;
  • 当m大于n时,结果为m/n的余数;
  • 当m小于n时,结果为m

 

class Test04{
    public static void main(String[] args){
        System.out.println(2+3);//5
        System.out.println("哈哈"+"啦啦");//"哈哈啦啦"
        System.out.println(1+2+3+"456");//"6456"
        System.out.println("123"+4+5+6);//123456
        //"123"+4="1234"+5="12345"+6="123456"
        System.out.println("123"+(4+5+6));//12315
        System.out.println(3/10);//0
        System.out.println(3.0/10);//0.3
        System.out.println(10/3);// 3
        System.out.println(10%3);// 1
        
    }
}
class Test05{
    public static void main(String[] args){
        /* 
        i++
        1.先开辟一个临时存储区
        2.将i的值复制到存储区
        3.i自身+1
        4.临时存储区的值等待被调用(参与运算,输出,赋值)
        */
        int i=3;
        i++;
        System.out.println(i);  //4
        System.out.println(i++);//4
        int j=i++;
        System.out.println(j);  //5
        System.out.println(i);  //6
        i=i++;
        System.out.println(i);  //6
        i=i++;
        System.out.println(i);  //6
        
        i=1;
        j= i++ + ++i + ++i + i++;
        // 1     3     4    4
        System.out.println(j); //12
        System.out.println(i); //5
 
    }
}

   2.赋值运算符

  • +=
  • -=
  • *=
  • /=
  • %=
  • =
class Test06{
    public static void main(String[] args){     
        int a=3;
        a=a+3;等同于a+=3
        a+=3;
        a=a+1;等同于a+=1; ++a;  a++;
        a+=1;
        ++a;
        a++;
        
        short s=3;
        
        //s=s+3;报错,不兼容的类型: 从int转换到short可能会有损失
        s+=3;
        System.out.println(s);//6
        a=1;
        System.out.println(a++==1);true      
    }
}     

 

     3.比较运算符

     4. 逻辑运算符

      5.位运算符

      指的就是二进制之间的运算

  • &
  • |
  • ^
  • >>右移
  • <<左移

 

class Test06{
    public static void main(String[] args){    
        int m=7;
        int n=11;
        System.out.println(m&n);    //3
        /*
            0111
            1011
           &0011 3
        */
        System.out.println(m|n);    //15
        /*
            0111
            1011
           |1111 15
        */
        System.out.println(m^n);    //12
        /*异或:不同为真 相同为假
            0111
            1011
           ^1100 12
        */
        System.out.println(m>>2);   //1
        /*
            0111
              01 11
        */
        System.out.println(m<<2);   //28
        /*
            0111
          011100
        */
        System.out.println(0b10010101>>3);//18
        //10010
        System.out.println(0b10010101<<3);
        //10010101000
        //x>>y x/2^y
        //x<<y x*2^y  
    }
}     

    6.三目运算符

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值