zoukankan      html  css  js  c++  java
  • JAVA学习总结(二)

    基本语法:

    1.数据类型

    1.1基本数据类型(8大类型):  

      byte 1字节 (0--255)
      short 2字节 (-32768 -- 32767)
      int 4字节 (-2^31 -- 2^31-1)
      long 8字节 (-2^63 -- 2^63-1)
    数字大小常量:
    例如:
    1.十进制数字表示:
    -50 0 100
    2.八进制数字表示:
    -050 0 0100
    3.十六进制数字表示:
    -0xF0A9 0x0 0x1A0D
    4.long类型的常量表示:
    1000000L 10000001

      float 4字节 -3.403E38-3.403E38
      double 8字节
    表示浮点数,是有误差的
    浮点数表示方法:
    1.十进制表示方法
    31.4 100 .314
    2.科学计数法:
    3.14E+1^ 1.0e+2 3.14E-1
    3.float与double不一样
    double类型: 10.5
    float类型: 10.5f 或 10.5F

    unicode双字节标准:
      char 2字节
      文本型char
      通常指用单引号包裹的单个字符,字符可以是字母,数字,汉字,符号
    例如: 'a','5','中','@'
    特殊:
    1.十六进制表示a字母: 'u0061'
    2.特殊符(转义字符)
    换行
    制表符
    "
    空字符

    布尔型:boolean 1位 true|false

    =============================================================================

    1.2引用数据类型(3大类) 

      数组 int[] char[] String[] Date[]...所有后跟[]都是数组


      类 String Math Date Calendar... 所有class定义的类


      接口 所有的interface定义的接口

    =============================================================================

    2.变量

    变量就是一个数据的存储空间,有三要素:数据类型,变量名,数值
    在JAVA中如何声明一个变量:
    语法:
    数据类型 变量名;
    数据类型 变量名=值;
    注意:JAVA中方法体内的变量不赋初始值不能使用

    例如:

    int age;
    char sex='男'char ch='
    ';
    char ch2='u0061';
    boolean bl = trueint num = 0xff; //数值255
    int num2 = 255;
    int num3 = 0100;//数值64
    float f = 5.236F;
    double d = 2.54;
    long l = 1000000L;

    变量名是程序员自定义的一个标识符,标识符规定:

    1.不能使用关键字
    2.首字符必须是字母,下划线或$符
    3.首字符之后可以跟字母、数字、下划线或$符
    4.严格区分大小写

    建议变量命名规范:

    1.尽量使用有意义的英文单词,次选拼音,不要用汉字。
    2.如果变量名是多个单词组合,建议从第二个单词开始首字母大写,
    例如:userName

    变量声明的位置:

    1.可以在方法的定义内部任何地方
    2.也可以在类定义的内部

    例如:

    public class 类名{
        int X;//成员属性变量
        public xxx 方法名(){
            int y;//局部变量
        }
    }

    java中输入与输出
    输出:

     System.out.print()//不带换行,不支持占位符
     System.out.println()//自动换行,不支持占位符
     System.out.printf()//格式化输出,能使用占位符(%d,%f,...)
    //例如输出一个变量的值:
     int num=100;
     System.out.print("num变量的值是:"+num+"
    ");
     System.out.println("num变量的值是:"+num);
     System.out.printf("num变量的值是:%d
    ", num);

    输入:

    //1.定义一个输入对象,这个对象只要定义一次,可以反复调用。
    java.util.Scanner input = new java.util.Scanner(System.in);
    //2.使用输入对象,调用方法接受键盘的输入
    int num = in.nextInt();
    String name = in.next();
    String address = in.nextLine();//带空格
    float num2 = in.nextFloat();
    double bl = in.nextDouble();
    
    //例如:
    public static void main(String[] args){        
    java.util.Scanner in = new java.util.Scanner(System.in);        
        System.out.print("请输入一个整数:");
        int num = in.nextInt();
        System.out.print("请输入一个字符串:");
        String s = in.next();
    
        System.out.println("num="+num);
        System.out.println("s="+s);
    }

    String op = kb.next();
    char ch = op.charAt();// op.charAt(0):从op的的字符串值中取第一个字符,返回类型是char;

    System.out 标准输出设置(显示器)
    System.in 标准输入设置(键盘)

    =============================================================================

    3.运算符

    Java的运算符,分为四类:

    赋值运算符、算数运算符、关系运算符、逻辑运算符、位运算符。

    1.赋值运算符:=,+=,-=,*=,/=,%=
    变量=表达式
    将表达式结果赋给左边的变量
    例如:
    +=
    x += 5;等同于 x = x+5;
    x *= 2+3;等同于 x = x*(2+3);

    2.算数运算符:+,-,*,/,++,--,%,?:

    例如:

    +:

    算术运算:左右两边是int,char,byte,double
    连接运算:左右两边只要有一个是String

    10/2 5
    10/3 3
    10/6 1
    10/6.0 1.6666666667

    %:求余数

    例如:

    10%5 0
    10%3 1
    3%5 3
    3.0%1 出错,小数不能参与模运算
    已经2016-3-8周三,再过15天,是周几?
    有一个两位数整数,取出个位数是几?
    xy%10
    10%10 0
    15%10 5
    98%10 8

    x是不是y的倍数
    x%y==0
    前置 后置
    ++x    x++ x = x+1
    --x     x--

    3.复合运算

    y = x++; 前提x=5, 计算后y=5, x=6
    y = ++x; 前提x=5, 计算后y=6, x=6

    例如:

    System.out.print(x++);
    System.out.print(x);//前提x=5,输出5,6
                
    System.out.print(++x);
    System.out.print(x);//前提x=5,输出6,6
                
    System.out.print(x+1);//前提x=5,输出6
    System.out.print(x++);//前提x=5,输出5

    ?:条件运算符,三目运算符,多元运算符
    条件?真值:假值

    例如:

    z = x>y?x:y;前提x=5,y=6,z的结果6
      x>Y?假
      取y
      赋值

    //程序中保存性别0,1分别表示男,女
    String s = sex==1?"男":"女";
    System.out.print(s);

    4.关系运算符:==,>=,<=,!=,>,<

    关系运算符的结果是布尔值。

    ==,!=是用于比较两个值是否相等或不等,
    这两个操作可以任意类型,但不保证结果正确。
    如果基本数据类型,结果正确。
    如果是引用类型,比较两个对象的地址是不是同一个。

    >,>=,<,<=只能比较基本数据类型的数据,不能用于比较引用型数据类型的数据。

    逻辑运算符:&&,||,!,&,|
    &&和||,对应and和or,连接多个关系运算,结果还是布尔值。
    a>b && b>c: 
    a>b和b>c同时为true,结果为true,否则为false
    a>b || b>c: 
    a>b和b>c同时为false,结果为false,否则为true。

    !表示取反.
    !(a>b):
    如果a>b为true, 结果为false;
    如果a>b为false, 结果为true。

    //是不是闰年(year)?
    year%4==0&&year%100!=0 || year%400==0
    //是不是平年(year)?
    !(year%4==0&&year%100!=0 || year%400==0)
    //
    (year%4!=0 || year%100==0) && year%400!=0

    &&与&区别:
    &&运算效率高,短路and,如果左边为false,右边不再计算。
    &运算左右两边无论任何情况下都要计算。

    前提:x=5,y=6
    x++>5 && y++>6;
    计算条件结果是false,x=6,y=6


    前提:x=5,y=6
    x++>5 & y++>6;
    计算条件结果是false,x=6,y=7

    位运算符:& | ~ ^ >> << >>>
    只对数值计算
    &:按位与
    例如:5&10
    5的二进制原码 0000 0101
    10的二进制原码 0000 1010
    然后每个位对应进行与运算,其结果是0

    与:只要同为1,结果为1,否则为0
    |:按位或
    或:只要同为0,结果为0,否则为1
    ^:按位异或
    异或:相同为0,不同位1

    8^12 结果是4

    0000 1000
    ^ 0000 1100
    ----------------
    0000 0100

    ~:按位取反
    取反:0变1,1变0

    例如:~5 结果是250
    0000 0101
    ----------------
    1111 1010
    其他运算符:
    (),[ ],new,instanceof(instanceof用来判断内存中实际对象A是不是B类型)

    优先级
    1级 (),[]
    2级 !,++,--,-(负号)
    3级 *,/,%
    4级 +,-
    5级 按位逻辑运算<<,>>
    6级 >,>=,<,<=
    7级 ==,!=
    8,9,10级 按位逻辑运算&,^,|
    11级 &&
    12级 ||
    13级 ?:
    14级 =

    =============================================================================

    4.表达式

    什么是表达式?

    运算符和操作数的有效组合;
    常用操作数:常量,变量,带返回值的函数,子表达式
    1+2:常量:1,2
    a=b+3:常量3,变量:a和b
    a=max(b,3)常量3,变量:a和b,函数max()
    a=b+3:b+3子表达式
    有效:
    5/0无效组合

    什么是jAVA表达式?

    运算符只能java中的运算符合操作数的有效组合;

    表达式出现位置:

    表达式;//java中语句
    控制语句中可以出现
    for(表达式1;表达式2;表达式3)
    if(条件表达式)
    ...

    例如:

    int a,b;
    a+b;//一个整数表达式,结果是int
            
    int a,b;
    a>b;//一个布尔表达式,表示条件,结果是boolean值
        
    int a;
    a=3;//一个赋值表达式,结果是将3赋给a变量

    特殊情况:

    所有byte,int,short,char类型的数据进行算术运算,结果是int类型。

    强制转换数据类型:

    int N=100;
    byte b=(byte)n;
    char c=(char)n;
            
    //注意:不是所有类型之间都可以强制转换,所有类型必须兼容。
    int n=(int)"abc";//错误:字符串与int类型不兼容
    int n=(int)'a';//编译出错

    =============================================================================

    5.流程控制语句

    a.条件分支

    if , if else, else if ,switch(多路分支)
    语法:
    switch(表达式){
      case 常量1 :代码1;break;
      case 常量2 :代码2;break;
      case 常量3 :代码3;break;
      ....
      default:
    }
    注意:
    1.表达式:结果必须是整数,char或String
    2.break可选,中断switch
    3.default可选
    4.case和default顺序可以换

    b.循环迭代

    for循环语句

    c.跳转

    break:
    在循环语句,用于结束循环
    包含在switch或循环语句内部

    continue
    结束本次迭代,回到循环条件
    只能包含在循环语句内部

    注意:
    1.break,coutinue一般在循环中的条件语句中
    2.break,countine在同一层中后不能有其他语句

    如何结束程序?
    System.exit(n);

    =============================================================================

    6、数组

    6.1数组的含义:

    一组相同的数据类型的固定长度的序列的数据集合,变量存放一个数据,数组可以存放多个数据。

    6.2定义或声明数组语法:

    声明数组:

      定义了一个数组名,没有开辟空间,长度没有固定,元素也不确定,不能使用元素。

      数据类型 数组名[];
      数据类型[] 数组名;

    //例如:
        int arr[];
        int[] arr;   

    默认初始化数组:

      数组名 = new 数据类型[长度];

    显示初始化数组:
      数据类型[] 数组名 = new 数据类型[]{数据1,数据2,....};
      数据类型[] 数组名 = {数据1,数据2,....};

    定义数组:既声明了数组名,也开辟了空间,只有开辟空间,就有默认值。  

      1.数据类型[] 数组名 = new 数据类型[长度];
      2.数据类型[] 数组名 = new 数据类型[]{数据1,数据2,....};
      3.数据类型[] 数组名 = {数据1,数据2,....};

    //例如: 
        int[] arr1 = new int[5];
        String[] arr1 = new String[5];
        int[] arr2 = new int[]{1,2,3,4};
        int[] arr3 = {1,2,3,4};

    数据的类型: 

      所有原始数据类型的数组,默认初始化值是0;boolean是false,char也是编码0。

      引用数据类型的数组,默认初始化值是null,null表示空对象或空引用。

    访问数组元素: 

      访问数组元素:读和写

      获取一个元素的值(读):变量 = 数据名[下标];

      设置一个元素的值(写):数组名[下标] = 新值;

      下标:是从0开始的整数,最大下标为数组元素个数-1。

    foreach遍历数组:

      for(int t(声明的变量名) : 数组名){
        System.out.println(t);
      }

      //二维数组   
           int[][]  arr2 = new int[2][5];
        //arr[0] = new int[5];
        //arr[1] = new int[6];
        
         //arr2是一个二维数组,原理:
        //0    0    0    0    0
        //0    0    0    10    0    0
        //arr2[1][3] = 10;    

    数组的声明定义方式:

    类型[] 数组名=new 类型[长度];//声明并定义

    int[] arr1 = new int[100];
    Object[] arr2 = new Object[100];


    类型[] 数组名=new 类型[]{数据1,数据2,数据3,...};//声明,定义并初始

    float[] arr1 = new float[]{10,10.5f};
    
    Date birthday = new Date();
    
    Date[] arr2 = new Date[]{new Date(), new Date(100000L), null,birthday, d,
    new SimpleDateFormat("yyyy-MM-dd").format("2015-8-9")};
    
    boolean[] arr1 = {true,false,true,true, false};
    
    String[] arr2 = {"abc","324","ABC"};

    使用字符串转日期

    String str = "2017-3-17";
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Date d = sdf.format(str);

    =============================================================================

    7.原码,反码,补码,浮点小数,定点小数,机器数

    1.机器数:

      一个数在计算机中的二进制表示形式,  叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1.

    2.原码: 

      原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制:

      [+1]原 = 0000 0001

      [-1]原 = 1000 0001

    3.反码:

      正数的反码是其本身,负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.

      [+1] = [00000001]原 = [00000001]反

      [-1] = [10000001]原 = [11111110]反

      可见如果一个反码表示的是负数, 人脑无法直观的看出来它的数值. 通常要将其转换成原码再计算.

    4.补码:

      正数的补码就是其本身,负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1).

      [+1] = [00000001]原 = [00000001]反 = [00000001]补

      [-1] = [10000001]原 = [11111110]反 = [11111111]补

      对于负数, 补码表示方式也是人脑无法直观看出其数值的. 通常也需要转换成原码在计算其数值.

    5.浮点数和定点数: 

      小数点的位置不固定,可以浮动,称为浮点数。

      规定小数点位置固定不变,称为定点数。

      在计算机中,通常是用定点数来表示整数和纯小数,分别称为定点整数和定点小数。对于既有整数部分、又有小数部分的数,一般用浮点数表示。

  • 相关阅读:
    expect
    grep
    Python函数
    Python的set
    Python字典
    Python循环
    Python条件判断
    Python列表
    Python字符串
    Python组织代码块的形式
  • 原文地址:https://www.cnblogs.com/ldm666/p/7921050.html
Copyright © 2011-2022 走看看