zoukankan      html  css  js  c++  java
  • Java 基础 | 命名和运算

     
      接着之前的知识,今天主要回顾一下命名的一些规则和关于运算方面的基础知识吧。
      
      1. 驼峰命名法
    类名/接口名:如果由多个单词组成,那么每一个单词的首字母大写。(比如说,HelloWorkd)
    变量名/方法名:如果由多个单词组成,那么第一个单词的首字母小写,其余单词的首字母大写 playGame main
    包名:如果由多个单词组成,那么每一个单词之间用 . 隔开,所有的字母都是小写 cn.tedu.de
    常量名:如果由多个单词组成,那么每一个单词之间用 _ 隔开,所有字母都是大写 PLAY_GAME
     
      2. 注释
    (用于解释说明的文字)
    // 注释文字  单行注释
    /* 注释文字*/  多行注释
    /** 注释文字/  文档注释 --- 里面的注释内容可以利用 javadoc 命令提取出来形成文档(就是对程序的说明书)*会生成错误是因为配置环境变量时加入了 CLASSPATH,因为版本是 1.8 以上的了,所以可以删掉。
     
               
     
      3. 字面量
    (在计算机中不可改变的量)
    整数常量:所有的整数(比如说 7、15、186、42)
    小数常量:所有的小数(比如说 3.12、8.005、6.0)
    字符常量:将一个字母、数字或者是符号用 ‘ ’标识起来(比如说 ‘a’、‘+’、 ‘5’、‘小’、‘ ’)
    字符串常量:将一个或者多个字符用 " " 标识起来(比如说 "abc"、"+")
    布尔常量:true/false --- 用于表示逻辑值
    空常量:null
     
     
    (计算机通过有电、没电这样的小开关来存放数据,只有0和1两种状态,是二进制存放)
               
      4. 进制
    (是一种计数方式(分和秒是 60 进制,天是 24 进制,周是 7 进制,但是常用的是 10 进制,计算机是二进制))
    二进制:0-1,满 2 进 1  1+1=10  11+1=100  111+1=1000。在程序中以 0b/0B 开头标记一个二进制数字(从 JDK1.7 开始) 0b1001  0b00101
    八进制:0-7,满 8 进 1  7+1=10  27+1=30 77+1=100  要求以 0 开头标记一个八进制数字
    十进制:0-9,满 10 进 1  Java 中数字默认就是十进制
    十六进制:0-9,A-F(不区分大小写),满 16 进 1  9+1=a  a+1=b  f+1=10  39+1=3a  3f+1=40  99+1=9a  9f+1=a0  af+1=b0  af+1=b0  ff+1=100,要求以 0x/0X 作为开头标记
      4.1进制的转换
     
    十进制和二进制之间的转换
    十进制转换为二进制:将这个十进制数字除以 2 ,从下依次向上倒取余数。
    二进制转换为十进制:从这个二进制数字的最低位次开始,依次乘以 2 的0、1、2、…… 次,最后求和。
     十进制和其他进制之间的转换
    十进制转化为其他进制:十进制数字向哪个进制转化那么就除以对应的进制,然后取余数,将余数倒排。
    其他进制转化为十进制:从这个进制的数字的最低位次,然后按位次乘以当前的进制的位次次幂,最后求和  0274=4*8^0+7*8^2=4+56+128=188
    一个面试题:16 * 5 = 150    (6 + n) * 5 = 5n + n^2,先设的是 n 进制,个位数是 6 ,那么进制肯定会大于或等于 6,于是前面可以表示为进制数相乘,后面可以用 10 进制转换为 n 进制)
     
    八进制和二进制之间的转换
    二进制转八进制:八进制数字排列 --- 三变一(就是从后往前数,三个三个一组,不足位数就在前面添 0)(比如说  001 101 010 = 0152    001 010 111 011=01273
    八进制转化为二进制:05473 = 101100111011  03517 = 11101100001111
     
    十六进制和二进制之间的转化:101100111011 = 0xb3b  011101001111 = 0x74f
    0xd2c=110100101100  (0到15的二进制数字背住)
     
    扩展:十进制小数转换为二进制
    5.24 = 101.001111
    0.24 * 2=0.48*2=0.96*2=1.92->0.92*2=1.84->0.84*2=1.68->0.68*2=1.36  0.72  1.44  0.88  0.76  
    绝大部分的小数转化为二进制都是无限的 --- 所以计算机小数的时候会产生舍入误差(存小数的时候会出现问题,比如 0.13=0.12999999999)


     
     
       5.变量
    (在程序中用于存储数据的容器,)
     
    定义格式:数据类型  变量名 = 数据;int i = 5;
     
    变量不能重名
    变量必须先定义后使用
    变量必须先给值后使用
    变量必须在哪儿定义就在哪儿使用
     
    扩展:计算机存储单位
    每一个二进制数字称之为 1 位 --- bit -b
    字节 - Byte - B  1B = 8b
    千字节 - kilobyte - KB 1KB = 2^10B = 1024B
    兆字节 - MB -> GB-> TB ->PB(帕比特)……
    8Mb = 1MB
    100Mb = 12.5MB(MB 是你的网速,这就是为什么你的网速一直达不到 100MB 的原因)
    3GB = 3000MB --- 在通信领域是按照千进制计算
    

      

      6. 数据类型
     
      
      6.1基本数据类型
      6.11数值型
        整数型
            byte -字节型 - 1个字节 - -27~27 -> -128~127
             byte b=25; byte b2=127; byte b3 = -128;
            short - 短整型 - 2个字节 - -215~215-1 ->-32768~32767
             short s = 800; short s2 = 1500;
            int - 整型 - 4 个字节 - -231~231-1 ->  -2.1*109~2.1*109 - Java 中,整数默认为 int 类型
             int i = 6;  int k=5_482_637(当表示一个比较大的整数的时候,可以使用 _ 进行分类,这种写法是从 JDK1.7 出现的)
             5 482 637 
            long - 长整型 - 8个字节 - 263~263-1 -> -1018~1018,需要以 L/l 作为结尾标记
             long l=54L;
        浮点型
            float - 单精度 - 4 个字节 -> -1038~1038  ---  需要以 f/F 作为结尾
             float f=5.87f;  float f=3.87F;
            double - 双精度 - 8 个字节 ->-10308~10308  Java 中小数默认为 double 类型 - 小数结尾可以添加 D/d 作为标记。
            double d = 4.5; double d2=2.58; double d3=9.54D;
        char - 字符型 - 2 个字节 -> 0~65535,使用的是utf-16
         char c = 'a';  char c2 = '\ua4f3'(表示用 uft-16 的编码形式来定义的)  char c3 ='中'; 
      7. 转义字符
    \t-制表符 table  \r-回车 return  \n-换行 next (打字机上回车把针头挪回开始位置,换行才是挪回到下一行)
      \\-反斜杠 \  \'-单引号 '  \"-双引号;
     
    扩展:将字符转换为数字的过程称之为编码 --- 编码表
    ISO - 8859 -1 - 西欧码表 - 1个字节表示 1 个字符  a
    (美  回  区) 
    gb2312 - 国标码 - gbk - 2 个字节表示 1 个字符 - 收录了常见的简体汉字以及一部分常见的繁体汉字
    Unicode 编码体系 - 收录了世界上常见语言的基本字符(像西夏文、原始部落的语言就不用收录了,) --- 规定了一系列的编码规则 - utf-8 -> 3个字节表示一个字符  utf-16 ->2个字节表示一个字符(java 用的)
    注意:规定无论哪张码表兼容西欧码表
    k 1 1 1 1 1 (英文不区分码表)
    区 X 2 3  2(汉字要区分码表)
     
        boolean - 布尔型 -true/false,用于表示逻辑值(内存随着操作系统、JDK 版本在变化,)
         boolean b = true;  boolean b2 = false;
     
      6.2 引用数据类型 --- 数组 [] 类 class 
     
      7.数据类型的转换
      7.1自动类型转换/隐式转换
     
    byte b = 125;
    int i = b;
    规律一:小的类型自动转化为大的类型
    short s=7;
    long l=s;
     
    long l=500; //500是一个整数,整数默认为 int,int 的范围比 long 小,所以可以自动转换
     
    float f = 56.71F;
    double d = f;
     
    int i=300;
    double d=i;
    规律二:整数类型可以自动转化为浮点类型,可能会产生一个舍入误差(1.23456794E9  xey 表示 x*10^y,而 ox3e5 才表示一个 16 进制)
    int i = 500;
    float f=i; // i 是 int 类型,int 的取值范围比 float 小,所以 int 可以自动转化为 float
     
    long l=259L;
    float f=l;
     
    float f=-25;// -25 是整数,
     
    char c='a';
    int i=c;
    规律三:
     
      7.2强制类型转换/显示转换
     
    int i=135;
    byte b=(byte)i;
    规律一:当把大的类型转化为小的类型的时候,因为补码的换算问题,所以可能会产生一个意想不到的结果
    double d = 6.4;
    int i = (int)d;
    规律二:小数在转化为整数时要舍弃小数位。
     
    扩展:数据的原反补三码
    数据类型的最高位是符号位 --- 如果最高位是 0,则表示一个正数,如果最高位是1,则表示一个负数。
    计算机中存储的是数据的补码
    直接计算出来的二进制数字是数据的原码
     
    int i=7;
    00000000 00000000 00000000 00000111  原码
    00000000 00000000 00000000 00000111  反码
    00000000 00000000 00000000 00000111  补码
    如果是负数,那么反码是在原码的基础上,最高位不变,其余位 0<->1; 补码是在反码的基础上 +1
    int j=-9;
    10000000 00000000 00000000 00001001  原码
    11111111 11111111 11111111 11110110  反码
    11111111 11111111 11111111 11110111  补码
     
    byte b = -18;
    原码:10010010
    反码:11101101
    补码:11101110(计算机中存放的就是这个,补码)
     
    int i = 135;
    byte b = (byte)i;
    00000000 00000000 00000000 10000111
    10000111 补码(计算机中存放的是这个,补码)
    10000110 反码
    11111001 原码(1+8+16+32+64=121 -> -121,显示出来的是这个)
    注意:规定用 -0 表示当前类型的最小值    1000 0000 --- -128(原反补都是相同的)0000 0000 --- 0
    byte b = 126;
    +1 = 127 + 1 = -128 
     
      8. 运算符
      8.1算数运算符
      (+ - * / % ++ --)
    注意:
    1.byte/short/char 在运算时自动提升为 byte b1 = 5;  byte b2 = 7;  byte b = b1+b2;(是会报错,因为后面是 int 型的,)
    2.整型在运算的时候保持类型不变(比如说一个整型除以一个整型还是整型)
    3.小类型和大类型运算,结果一定是大类型(比如说一个 int 型除以一个 double 型就是一个 double 型的)
    4.任意整数/0 - ArithmeticException - 算术异常 
       任意整数/0.0 任意非零小数/0 - Infinity - 无穷大
       0/0.0  0.0/0.0  0.0/0 NaN - Not a Number - 非数字
     
    % - 取模运算 - 取余运算
    9 % 4 = 1 、3 % 8 = 3
    -9 % 4 = -1 、 9 % -4 = 1 、 -9 % -4 = -1
    % 的结果的正负看的是 % 左边数据的正负 -> 如果左边的数字是一个正数,那么结果就是正数;反之,那么结果就是负数
    5%1.4=0.8 、 6.3 % 1.7  = 1.2
     
    ++/-- 自增/自减运算
    ++/--  如果在变量之前,那么先自增/自减,然后参与后续运算
    ++/-- 如果在变量之后,那么先参与运算,然后再自增/自减
    int i= 6;  
    int j=i++ + ++i; //输出结果 i = 8 ,j = 14
     
    byte/short/char  都可以参与自增运算
    char c = 'b'
    int c = c + 2; ->100
    'a' ~'z' -> 97~122      'A'~'Z' -> 65~90      '0' ~'9'-> 48~57
     
      8.2赋值运算符
      8.3关系运算符
      8.4逻辑运算符
      8.5位运算符
      8.6三元运算符
     
    关于 >> 和 >>> 的区别:
    https://blog.csdn.net/blog_szhao/article/details/23997881
  • 相关阅读:
    精彩的“利益均衡”,尤其是“四”
    用搭积木的方式开发
    从公司层面看信息管理中的问题
    广义信息结构
    Cephfs创建及挂载
    对各类术语表进行记录
    weixin报警脚本
    shell 实现mysql写入操作
    python生成图片
    python实现路由追踪,并生成追踪图片
  • 原文地址:https://www.cnblogs.com/tangdiao/p/9403689.html
Copyright © 2011-2022 走看看