Java语言基础1

1.关键字

Java的关键字对Java的编译器有特殊的意义,用来表示一种数据类型, 或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名和参数,关键字都是小写的

2.标识符

  1. 标识符是用来给类、对象、方法、变量、接口和自定义数据类型命名的
  2. Java标识符由数字,字母和下划线(_),美元符号($)或人民币符号(¥)组成
  3. 在Java中是区分大小写的,而且还要求首位不能是数字
  4. Java关键字不能当作Java标识符

3.注释:

3.1 单行注释//
3.2 多行注释/*  */
3.3 文档注释/**  */注释内部文字可以提取成文档说明书

4.常量和变量:

常量:

整数常量:所有整数
小数常量:所有小数
布尔常量:true,false
null常量:null
字符常量:将一个字母或数字加单引号标识' a '
字符串常量:将一个或多个字符用双引号标识" abc "

注意区分空字符串" "和null区别

进制:

二进制,八进制用O开头表示,十进制,十六进制用Ox开头表示
1字节byte = 8个bit(二进制位)
1k = 1024
3个二进制位表示一个8进制位
4个二进制位表示一个16进制位
ipv4地址就是由四个字节组成,每段一个字节,比如192.130.1.100
现已升级到ipv6,每段融入字母

负数的二进制位表现:
绝对值的二进制取反加1,负数的二进制位的最高位是1

变量:
必须被初始化,并且只在自己的作用域有意义,在内存中建立一个变量空间,离开作用域空间就被释放了

1.定义:
内存中的一个存储区域,有自己的名称和数据类型(java的强类型约束该空间只能存
一种类型数据),该区域数据在同一类型范围内不断变化

2.作用:
用来不断存放同一类型变量,并可以重复使用这段空间

3.什么时候用:
一旦数据不确定就使用变量

变量声明后必须初始化值,并且有自己作用范围,只在自己作用域有效,进行运算时两边类型
必须一致,类型不一致内存空间就不一致。若两边是数值型,可以做自动类型提升,进行类
型转化,以占用内存空间较大的为主

数据类型:

Java是强类型语言,每种数据都定义了明确的数据类型,在内存中分配了大小不同的内存空间
(1).基本数据类型:
      整数默认int,小数默认double
       a.数值型:
            整数型:
                  byte:8个二进制位
                  short:16个二进制位
                  int:32个二进制位
                  long:64个二进制位, 长整型后面要加l, 
                       long l = 123l;非默认使用要加符号
            浮点型:
                  float:单精度4个字节
                  double:双精度8个字节
       b.字符型:可以中文(两个字节)
       c.布尔型
(2).引用数据类型    

容易犯的错误:

1.  byte b = 3;
    b = b + 4;会出现丢失精度,
    4是int型,b是byte型,b + 4时进行了自动类型提升使得b + 4  的结果是int型,而
    等号左边的b是byte型,把int型往byte型赋值,必然出现损失精度,若想进行赋值需要
    进行强制类型转换 b = (byte)(b + 4),强制转换要慎用,会丢失精度

2.  float也是4个字节,4个字节中存在小数位,float和int进行相加时结果仍是float型

 ‘a’ + 1 = 98
  a 对应ASCII表97
  Unicode国际标准表识别中文
  负数字节最高位是1 

3.  整数默认int类型
     byte b = 4;
     byte b = 3 + 7; 可以
     byte b1 = 3;
     byte b2 = 7;
     b = b1 + b2; 不可以;右边是变量运算结果不确定且可能超出范围,
     Java是强类型语言,右边值不确定检查类型时检查不出来就会报错,这
     种情况一般出现在整型的多字节往少字节赋值,比如b1 = 127;
     若定义int x; x = b1 + b2;无论byte型的b1和b2如何赋值不可能超出int范围

5.运算符:

1.算数运算符: +  -  *  /  %  +(连接符)  ++  --

              /运算注意,6370 / 1000 = 6;
              %运算涉及到负号,负号只参考被模数
              任何数据只要和字符串相加都是相连接,3 + ‘2’得字符串’32’

举例:
    Int a = 4, b = 5;
    打印a ,b 的值System.out.println(a + ‘,’ + b);
    System.out.println(“a =” + a + “, b =” + b);
    int a = 3, b;
    b = a++; 在内存中的过程是先把a当前值取出,在内存中临时存储,然后a进行自增
    运算,然后将内存中先前临时存储的a的值赋给b,所以最后a = 4; b = 3;实际上就是
    运算顺序的问题,若b = ++a;就不需要先临时存储,a = 4, b = 4;

    int i = 3;
    i = i++;
    输出i = 3,

2.赋值运算符: =, +=, -=, *=, /=, %=;

举例:
    short s = 3;
    s += 4;做自动类型转换
    s = s + 4;会报错,应写成s = (short)(s + 4);

3.比较运算符:
            运算完的结果必须是true和false

4.逻辑运算符:
            &  |  !
            用于连接两个布尔类型的表达式
            && 和 & 区别:
            &:无论左边运算结果是什么,右边都参与运算
            && : 当左边结果为false时,右边不参与运算
            | 和 || 区别:
            | :无论左边运算结果是什么,右边都参与运算
            || : 当左边结果为true时,右边不参与运算

5.位运算符:
            所谓位运算是二进制计算
            &:任何数&1都是本身
            | :是有效位,或运算可以将有效位保留
            异或 ^ 不同得1,一个数异或同一个数两次,结果还是这个数
            << : 二进制位向左移,空位补0,左移一位数扩大二倍
                   左移可以完成2的次幂乘运算
            >> : 二进制位向右移,右移一位变为原本一半,对于高位出现的空位原来高位是啥就补啥
                   右移可以完成2的次幂除运算
            >>>:无符号右移:数据右移时,高位出现的空位,无论原符号是什么都用0补

            应用:
                运算比较高效直接用位运算,最有效计算2 * 8是2 << 3
                对两个整数变量进行互换(第三方变量):

                 int a = 3,b = 5;
                 a = a ^ b,
                 b = a ^ b,
                 a = a ^ b;

6.三元运算符:

                条件表达式?表达式1:表达式2

6.程序流程控制:

 顺序,判断,选择,循环
         
 一.判断:
     1. if (条件表达式) {
            执行语句;
        }
     2. if (条件表达式) {
            执行语句;
        }
        else {
            执行语句;
        } 
       三元运算符就是if else语句简写格式.
       简写格式什么时候用?当if else 语句有一个具体的结果时可以简写成三元运算符
     3. if (条件表达式) {
            执行语句;
        } else if (条件表达式) {
                执行语句;
        } else {
                执行语句;
        }
        单句语句只执行一句;
     4. if (条件表达式) {
           执行语句;
        } 
        if (条件表达式) {
           执行语句;
        } else {
             执行语句;
        }
        执行两个if语句

此处即为多个else if 和多个if的区别

局部变量代码块可以决定局部变量的生命周期;

二.选择:

switch(表达式) {
    case 取值1:
        执行语句;
         break;
    case 取值2:
        执行语句;
         break;
    ......
    default:
        执行语句;
        break;
}
switch 后面的表达式只有四种类型可以选择byte, short, int, char;
无论default放在前面后面,都先执行case
需要注意的是break,只有switch的最后一个break可以省略,如果如下写法:
int x = 2;
switch(x) {
    default: 
        System.out.println("d");
    case 4:
        System.out.println("a");
    case 1:
        System.out.println("c");
    case 3:
        System.out.println("e");
    case 5:
        System.out.println("f");

顺序判断流程:
    先判断case,没发现符合case然后选择default,打印d,因为default没有break,
    继续执行case依次打印输出a c e f

    可以多个case执行一个语句

if 和 switch的应用场景:
    if:
            1.对具体的值进行判断
            2.对区间判断
            3.对运算结果是boolean类型的表达式进行判断
    switch:
            1.对于具体的值进行判断
            2.值的个数通常固定
            对于几个固定的值判断,建议用switch,因为switch语句会将具体的
            答案都加载进内存,效率相对比较高

三.循环
 1. while(条件表达式) {
        执行语句;
    }
    循环的两个关键,循环条件和循环次数

 2.  do {
               执行语句;
        } while(条件表达式)
     do while 先执行后判断,无论条件是否满足循环体,至少执行一次

 3.  for (1.初始表达式; 2.循环条件表达式(需要布尔类型);  4.循环后的操作表达式) {
         3.执行语句(循环体);
     }
    上面数字是执行顺序
  
    while循环和for循环可以互换,区别在于for为了循环而定义的变量在for循环结束后
    就在内存中释放,而while循环使用的变量在循环结束后还可以继续使用,考虑变量的后续使用与否来选择是用for还是while

     无限循环的简单形式:
     while(true) {}
     for (;;) {}


     什么时候使用循环结构?
     当对某些代码执行很多次时,使用循环结构完成
     当对一个条件进行一次判断时,使用if语句
     当对一个条件进行多次判断时,使用while语句

     注意:
         在使用循环时,一定要明确哪些语句需要参与循环,哪些不需要,循环通常情况下,
         需要定义条件,需要控制次数

break 和 continue:

break跳出语句,作用的范围要么是switch语句,要么是循环语句
记住,当break单独存在时,下面不要定义其他语句,因为执行不到。
break表示跳出当前循环,如果出现了循环嵌套,break想跳出指定循环,可以通过标量来完成
循环可以起名字,

xunhuan1:for {
              xunhuan2:for{
                           break xunhuan1;
                           }
              }
加了名字可以直接跳出最外层循环,不加名字只能跳出当前循环

continue:作用范围循环结构,结束本次循环,继续下次循环,如果continue单独存在时,
下面不要有任何语句,因为执行不到,continue同样可以通过循环名来执行继续语句

转义字符:

 常见:
       \n 回车
       \t 制表符
       \b 退格
       \r 按下回车键
 window操作系统中回车符是有 \r \n组成,cmd中可以识别\n 为回车键,
 但很多window只能识别\r \n
 linux中回车符是 \n

你可能感兴趣的:(Java语言基础1)