java的基础知识(二)

2021-01-21 14:14

阅读:798

标签:汉字   位移   默认   ace   eof   标识符   位置   expand   等于   

基本数据类型

  • 四种基础类型:

  1. 整数类型:如2,50,12等

    整数的四种声明类型:

    byte: ---> 1字节 ---取值范围---> -128~127

    short:---> 2字节 ---取值范围---> -32768~32767

    int: ---> 4字节 ---取值范围---> -2147483648~2147483647

    long: ---> 8字节 ---取值范围---> -9223372036854775808~9223372036854775807

  2. 浮点类型:如3.2,132.0,-12.1等

  3. 字符类型:如‘a‘,‘g‘,‘中‘等

  4. 布尔类型:true,false。布尔值只有两个

  • 如何创建变量

  • 1.创建整型变量

    示例:

     1 byte a=12;
     2 byte a=12,b=-13;
     3 
     4 short a=153;
     5 short a=153,b=-201;
     6 
     7 int a=65231;
     8 int a=65231,b=-5234;
     9 int c=5+b;
    10 
    11 long a=562314563L;
    12 long a=452L,b=-532L;
    13 long c=452L+532L;
    14 //注意:创建long类型数值时需要给值后加上L或l,否则会导致数据精度的丢失。因为整数的默认类型是int类型,int的范围又没有long的数值范围大,
    15 //当数值超出了int的取值范围又没有添加L或l的后缀时,精度会丢失,得到的数据比定义的小。
    16 
    17 /**
    18  *常见错误:
    19  *long a = 123654789 * 987456321;
    20  *正确的应该是:
    21  *long a = 123654789L * 987456321L;
    22  */

      2.使用不同进制的整数赋值

    • 10进制:例如,int a=44;

    • 8进制:以0开头,例如:int b=044;

    • 16进制:以0X或0x开头,例如:int c=0x44;

    浮点数的两种声明类型

    float:在内存空间占用4个字节,取值范围:

    1.4E-45~3.4028235E38

    double:在内存空间占用8个字节,取值范围:

    4.9E-324~1.7976931348623157E308

    示例:

    1 float a=1.1f;
    2 float a=1.1F,-2.4f;//float 修饰的值必须加F或f后缀
    3 
    4 double a=3.1415926;
    5 double a=3.1415926,b=-3.1415926;
    6 double c1=1.0D,c2=3.1d,c3=-2.6;//double修饰的值可以加D或d后缀,也可以不加,因为它是java默认的浮点类型

    注意:近似值不精准

    4.35*100 --四合五入法--> 使用java提供的四舍五入法Math.round();

    0.1==2.0-1.9 --最小数对比法--> 使用java提供取绝对值方法Math.abs()与最小数"1e-6"相比较

    字符类型的概念

    用单引号包含的可打印的单个符号,例如:

    ‘a‘   ‘5‘   ‘大‘   ‘#‘     ‘  ‘     ‘B‘  

    不是字符的,例如:

    ‘word‘   "M"   ‘5‘!=5

    char类型

    char 是整数 采用(Unicode编码) 取值范围0~65535

    示例:

    1 char a1=‘a‘;            char b1=‘汉‘;            char c1=‘2‘
    2 char a2=97;            char b2=27721;            char c2=50;//以上这两种赋值方法的结果相同的 

    如何给char变量赋值单引号:

    错误思路:写三个单引号不就行了:

     1 char a=‘‘‘; 2 //注意:如果出现三个单引号,编译器就不知道从哪里开始,从哪里结束,肯定会报错 

    转义字符

    转义字符       含义
    \‘          单引号字符
    \"          双引号字符
    \\          反斜杠字符
    \t          垂直制表符,将光标移动到下一个制表符的位置
    \r          回车
    \n          换行
    \b         退格
    \f          换页

    布尔类型

    创建布尔类型

    boolean: true false

    注意:布尔类型只有两个值,其他的值都不可用。

    变量与常量

    标识符与关键字的概念

    标识符的概念:------名字

    由任意的大小写字母(A~Z,a~z),下划线(_),美元符号($),数字(0~9)组成,注意:数字不能开头,不能为java中的保留关键字。

    容易写错的标识符:20warrior(数字开头),public(关键字),one%two(有%号不合法),User Name(标识符单词之间有空格)等等。

    正确的标识符:time,alp56,_interface,O_o,BGM,$$$等等。

    标识符是严格区分大小写的,good和Good是两个不同的标识符。

    标识符使用汉字

    例如:

     1 String 名字="唐僧";

    2 String 职业="和尚";//汉字命名是不好的习惯,一旦字符序列使用的非GBk编码,会出现乱码 

    标识符的命名规范

    类名 方法名 变量名 常量名
    类名 方法名 首单词字母小写,后续单词首字母大写。例如:sisterName,lightName 常量名

    关键字

    开发工具中变颜色的单词。

    变量:变量的值是可以改变的

    内存如何存储数据?

    数据各式各样,要先根据数据的需求(即类型)为它申请一块合适的空间。

    为什么需要变量?

    为了解决内存地址不好记,内存地址如([C@30i126,[D@60e127等等)

    如何声明变量?

    语法:

    数据类型 变量名称 = 变量值;

    示例:

    1 int a=1;
    2 long b=456321L;
    3 char c=‘p‘;
    4 boolean flag=true;

    常量:开发过程不需要更改,甚至不允许更改的量

    常量的声明

    语法:

    final 数据类型 常量名称 = 常量值;

    示例:

    final int a=654;
    final double PI=3.1415926;

    赋值运算符

    赋值运算符就是“=”

    量 = 值
    做写的操作,被赋予等号右侧的值 做读取的操作,可以是常量、公式

    正确的例子:

    1 int i=5,j=6,k=8;    //定义整型变量i、j、k
    2 final int value=3;    //定义整型常量
    3 i=9;                //变量=常数
    4 k=i+j;                //变量=表达式
    5 a=b=c=d=4;            //变量=变量=变量=常量

    错误的例子:

    9=a;                //不能赋值给常量
    i+k=j;                //右值不能被赋值

    算术运算符

    运算符 说明 实例 结果
    + 23.56f+10 33.56
    - 6.32-0.3 6.02
    * 5L*13.56f 67.8
    / 9/4 2
    % 取余 9/4 1

    加法与减法运算符

    (+)一元正号:+30,+50,+100

    (+)加法运算符:x+y,5+32,a+b

    (+)拼接字符串:"Hello"+"Word"

    (-)一元负号:-30,-50,-100

    (-)减法运算符:x-y,5-2,a-b

    乘法、除法与取余运算符

    (*)乘法运算:int a=6*2

    (/)除法运算:int b=6/2

    (%)取余运算符:double c=6.2%3.0

    注意:使用除法运算符与取余运算符时,0不能做除数。

    自增和自减运算符

                       自增运算符           自减运算符

          前置形式           ++a               --a

    语法

          后置形式           a++               a--

    计算结果                 a+1                 a-1

    注意:自增和自减都是单目运算符,不可以放在圆括号之外。例如:(a+b)++ --(x+y)等等

    前置与后置的区别

            b=a++;                   b=++a;

                                    

    结果:       b=a;//先做赋值运算           a=a+1;//先做自增的运算

    结果:       a=a+1;//再做自增的运算         b=a;//再做赋值的运算

    自减与上原理相同。

    关系运算符

       属于双目运算符,是用来判断一个操作数与另一个操作数之间的关系的运算符,计算结果是一个布尔值(true或false)。

    运算符 说明 实例 结果
    == 等于 5==6 false
    小于 5 true
    > 大于 5>6 false
    小于等于 8 true
    >= 大于等于 9>=9 true
    != 不等于 8!=3 true

    如何同时使用多个关系运算符

    数学中连续小于或连续大于:ab>a

    java中这么写可以吗?答案是:不可以,java中不能串联使用关系运算符,那么解决方案就是在他们之间使用逻辑运算符

    逻辑运算符

    运算符 含义 实例 结果
    && 逻辑与 A&&B (真)与(假)=假 --->一假为假
    || 逻辑或 A||B (真)或(假)=真 --->一真为真
    ! 逻辑非 !A 不(真)=假 --->杠精

    位运算符

    位运算符分为两大类:位逻辑运算符、位移运算符。

    位逻辑运算符

    运算符 含义 实例
    & a&b
    | a|b
    ~ 取反 ~a
    ^ 异或 A^b

    位移运算符

    运算符 含义 实例
    左移位 a
    (>>) 右移位 b>>4
    (>>>) 无符号右移 x>>>2

    位逻辑运算结果

    A B A&B A|B A^B ~A
    0 0 0 0 0 1
    1 0 0 1 1 0
    0 1 0 1 1 1
    1 1 1 1 0 0

    1.位与运算

    十进制12和8进行与运算

      0000 0000 0000 1100
    &     0000 0000 0000 1000
    ————————————————————————
      0000 0000 0000 1000
    12和8进行与运算结果还是8

     

    2.位或运算

    十进制4和8进行或运算

      0000 0000 0000 0100
    |   0000 0000 0000 1000
    ————————————————————————
      0000 0000 0000 1100

    4和8进行或运算结果是12

     

    3.位异或运算

    十进制31和22进行异或运算

      0000 0000 0001 1111
    ^     0000 0000 0001 0110
    ————————————————————————
      0000 0000 0000 1001
    31和22进行异或运算结果是9

     

    4.位取反运算

    十进制123进行取反运算

    ~ 0000 0000 0111 1011
    ————————————————————————————
       1111 1111 1000 0100
    123进行取反运算结果是-124

     

    位逻辑运算的逻辑结果

    A B A&B A|B A^B
    true true true true false
    true false false true true
    false true false true true
    false false false false false

    位移运算

    左移
    1           2的零次方   0000 0000 0000 0001     初始值=1
    1 2的1次方 0000 0000 0000 0010 左移一位=2
    1 2的2次方 0000 0000 0000 0100 左移两位=4

    注意:每次的结果=原来的2倍是在符号位没有发生改变的情况下。

    示例:

    short a=9115            0010 0011 1001 1011
    a 0 0100 0111 0011 0110 溢出舍去
    a 00 1000 1110 0110 1100 溢出舍去
    右移>>每次的结果=原来的2分之一
    32768                   ...1000 0000 0000 0000     2的15次方
    32768>>1 高位补零 ...0100 0000 0000 0000 2的14次方
    32768>>2 ...0010 0000 0000 0000     2的13次方

    整数右移之后还是正数。

    负数右移,高位补1,就保证了其还是一个负数。

    示例:

    -32768                  ...1000 0000 0000 0000     -的2的15次方
    -32768>>1 高位补1 ...1100 0000 0000 0000 -的2的14次方
    -32768>>2 ...1110 0000 0000 0000     -的2的13次方
    无符号右移

    例如:

    -32766      1111 1111 1111 1111 1000 0000 0000 0010
    初始值
    补0   0111 1111 1111 1111 1100 0000 0000 0001 0 结果=2147467265
    无符号右移一位 溢出舍去
    补0   0011 1111 1111 1111 1110 0000 0000 0000 10 结果=1073733632
    无符号右移两位 溢出舍去

    无符号右移,高位一律补零。

    注意:byte和short类型不适合用无符号右移,它俩属于低精度的整型,无符号右移的结果往往不准确。

    三元运算符

    语法:
    返回值=判断公式?结果1:结果2;
    要求:判断公式是返回一个布尔值的公式
    如果公式返回的是true,运算符结算返回结果1
    如果公式返回的是false,运算符结算返回结果2
    ?
    示例:
    int a=2;
    int b=a最终的到的结果b=2
    int c=5;
    int d=c最终的到的结果d=36

    运算符优先级

    优先级 描述 运算符
    1 括号 ()
    2 自增,自减,逻辑非,正负号,取反 ++,--,!,+,-,~
    3 乘,除,取余 *,/,%
    4 加,减 +,-
    5 左移位,右移位,无符号右移位 >,>>>
    6 小于,小于等于,大于,大于等于,判断继承关系 ,>=,instanceof
    7 等于,不等于 =,!=
    8 &
    9 异或 ^
    10 |
    11 并且 &&
    12 或者 ||
    13 赋值 =,+=,-=,*=,/=,%=,>=,&=,^=,|=,>>>=

    总结:

    1.从操作数个数来看,单目运算符的优先级高于双目运算符优先级

    2.按照运算符的作用来看,()这种级别最高,之后依次是算术运算符,位运算符,关系运算符,逻辑运算符,赋值运算符。

    数据类型转换

    遵循的原则:勿以小杯盛大物

    不同类型占用的计算机内存空间不同的,例如byte--->int--->long的内存空间依次增大的,小的往大的转换不会溢出,大的转换成小的可能会溢出。

    两种转换方式

    1. 隐式转换(自动转换)

    byte a=10;
    short b=a;
    int c=b;
    long d=c;
    float e=d;
    double f=e;

     

        char

     

     

    byte ---> short ---> int ---> long ---> float ---> double

    char的取值范围内,char和int试兼容的。

    示例:

     

     1 char a=‘A‘;
     2 int b=a-3;
     3 //结果b=62;
     4 //运行代码如下:
     5 public class Demo {
     6     public static void main(String[] args) {
     7         char a=‘A‘;
     8         int b=a-3;
     9         System.out.println(b);
    10     }
    11 }


    技术图片

      2.显示转换(强制转换)

    语法: (类型名)要转换的值 例如:

    1 public class Demo {
    2     public static void main(String[] args) {
    3         int a=101;
    4         byte b=(byte)a;
    5         System.out.println(b);
    6     }
    7 }

     

      低精度向高精度转换的时候可以用隐式转换,也可以用显示转换,

      但,高精度向低精度转换的时候,只能使用显示转换,而且有可能造成数据丢失。

     

    例如:

    1 public class Demo {
    2     public static void main(String[] args) {
    3         float a= (float) 3.1415926;
    4         System.out.println(a);
    5     }
    6 }

    结果造成了数据失准。

    再例如:

    1 public class Demo {
    2     public static void main(String[] args) {
    3         float a= (float) 3.1415926;
    4         int i= (int) a;//小数点丢失
    5         System.out.println(i);
    6     }
    7 }

    再例如:

    1 public class Demo {
    2     public static void main(String[] args) {
    3         int a=130;
    4         byte b=(byte)a;
    5         System.out.println(b);
    6     }
    7 }

    代码注释

    代码的注释与编码规范

    注释:就是对代码的解释和说明。

    注释范围内的任何内容都不会被计算机编译执行。

    注释的作用:是给开发者看的,便于读懂你写的代码,也便于开发与维护(简单来说就是,说明文字,删除冗余,调试代码)。

    注释的三个种类

     1 //这里是单行注释
     2 
     3 /*
     4   这里
     5  6   多行注释
     7  */
     8 
     9 /**
    10   这里
    11 12   文档注释
    13  */

    前两种常用,是帮助我们添加解释说明和调试程序的,后面一种是帮助我们生成文档的,其实java的API就相当于文档注释生成的

     

    编码规范

    不以规矩不能成方圆

    我们应该遵循的代码规范

    1 int a=5;
    2 int b=3;               //尽量使每个变量的声明单独占用一行。
    3 
    4 public     static viod;      //关键字与关键字之间只认一个空格,多个空格属于冗余,没有用
    5 Person().list[2][5].getId();   //不要使用技术性很高、难懂、易混淆的语句
    6 String name="王五";        //创建名字,对于关键的方法要多加注释。

    常见的错误

    1.分号报错了,有可能写的是中文的分号,输入英文下的分号即可解决。

    2.方法错了,有可能是我们输入了中文下的引号,输入英文下的引号即可解决。

    java的基础知识(二)

    标签:汉字   位移   默认   ace   eof   标识符   位置   expand   等于   

    原文地址:https://www.cnblogs.com/Aimblogs/p/12895976.html

    上一篇:数组对象与ArrayList

    下一篇:拓扑排序


    评论


    亲,登录后才可以留言!