zoukankan      html  css  js  c++  java
  • 2020.8.6_Java学习日记

    数据类型 
        1.java 没有任何无符号(unsigned)形式的int、long、short、或byte类型。
    常量
        2.关键字final这个变量只能被赋值一次,一旦赋值之后就不能再更改了,习惯上,常量名使用全是大写。参考C++中的const。
            而const是java保留的关键字,但是不免并没有使用,再java中,必须使用final来定义常量,如果希望某个常量可以在一个类的多个方法中只用,通常将这些常量称为:类常量,使用关键字static final来设置一个类常量。
            类常量的定义位于main方法的外部,所以在一个类的其他方法中也可以使用这个常量。
     
    运算符:
        1.java中,没有幂运算,因此需要借助Math类的pow方法。
    字符串
        2.Java类标准库中提供了一个预定义字符串类,叫做String,每个用双引号括起来的字符串都是String类的一个实例。

        3.String类的substring方法可以从一个较大的字符串中提取出一个子串。
            String greeting="hello";
            String s=greeting.substring(0,3); 
            ===>  hel
        4.java中可以使用"+"来实现字符串的拼接。
        5.使用equls方法来检测字符串是否相等 
            s.equls(t),返回值为true或false
            检测是否相等而不区分大小写可以使用equlsIgnoreCase方法
        6.空串""长度为0,null串表示目前没有任何对象与该变量关联
        7.String API(核心技术卷I第50页)

    输入输出
        1.要想通过控制台进行输入,首先需要构造一个Scanner对象,并与“标准输入流”System.in关联
            Scanner in=new Scanner(System.in);
            int age = in.next();
    控制流程
        1.与C++不同,java提供了一种带标签的break语句,用于跳出多重嵌套的循环语句。(有点像goto)
    */
    /*
    8.04
    数组
        1. int a[]; 这个语句只是声明了变量a,若要将a初始化为一个真正的数组,需要int[] a =new int[100];
        2. 若要实现指定数组大小并进行输入:
            int n = in.nextInt();
            int[] a = new int[n];
            for (int i:a) {
                System.out.printf("input a[%d]", i);
                a[i] = in.nextInt();    
            }
        3.java中一种功能很强的循环结构,用来依次处理数组中的每个元素,不必指定下标值。 (其实和C++中的一样)  
            for(int element :a)
                System.out.println(element);
        4.java数组与C++中的指针数组int *p[n]一样,
            int[] a=new int[100]; ->java 
            int* a=new int[100];->C++     二者等同
        
        5.在Java应用程序的main方法中,程序名并没有存储在args数组中,
            例如:java Message -h world
            其中的args[0]是“-h”而不是“Message”或者"Java"
        
        6.数组排序,使用Arrays类中的sort方法。
    */
    /*
    8.05
    Arrays类的几个常用方法
        1.toString 返回数组中数据元素的字符串
        2.copyOfRange 返回与a类型相同的一个数组
        3.sort 快排
        4.BinarySearch 二分查找值V
        5.fill 将数组所有元素值设为v
        6.equals 两数组是否相等,bool
    多为数组与不规则数组:
        Java中其实没有多维数组,因为Java中的一维数组其实是指针数组,多维数组就可以理解为数组的数组。

    对象与类
        1. 如果将一个方法应用于一个值为null的对象上,会产生运行时错误,局部变量不会自动初始化为Null,
            必须通过调用new或者将它们设置为null进行初始化。
            Date birthday=new Date();
            birthday= null;
            String s= birthday.toString();//err 
        2.Java对象变量与C++的引用类似,但是C++中没有空引用,并且引用不能被赋值,Java对象变量相当于C++的对象指针。
            Date birthday ==> Date* birthday
        3.Java构造器的工作方式与C++一样,但Java对象是在堆中构造的,而且构造器总是伴随着new操作符一起使用。
        
        4.构造器中不能定义与实例域重名的局部变量
        5.Java允许重载任何方法,并不只是构造器方法,因此,要完整描述一个方法,就需要指出方法名以及参数类型,
            这就叫做方法的签名。
        
        6.变量的分类:成员变量与局部变量
            a.在方法体外,类体内声明的变量称为成员变量。
            b.在方法体内部声明的变量称为局部变量。
                成员变量:1.实例变量(不以static修饰)
                         2.类变量(以static修饰)
    */
    /*
    继承
        1.Java中,所有的继承都是公有继承,而没有C++中的私有继承和保护继承  
    */
     
    变量的分类:成员变量与局部变量
            a.在方法体外,类体内声明的变量称为成员变量。
            b.在方法体内部声明的变量称为局部变量。
                成员变量:1.实例变量(不以static修饰)
                            2.类变量(以static修饰)
     局部变量:1.形参 2.方法局部变量 3.代码块局部变量
     
    成员变量与局部变量的区别
    成员变量
    1. 成员变量定义在类中,整个类都可以被访问
    2. 成员变量分类类成员变量和实例成员变量,实例变量存在于对象所在的堆内存中。
    3. 成员变量有初始化默认值。
    4. 成员变量的权限修饰符可以根据需要选择任意一个。

    局部变量

    1. 局部变量值定义在局部范围内,如:方法内,代码块内等。
    2. 局部变量存在于栈内存中。
    3. 作用的范围结束,变量空间会自动释放。
    4. 局部变量没有默认初始化值,每次必须显式初始化
    5. 局部变量声明时不指定权限修饰符。

    匿名对象

      不定义对象的句柄,直接调用这个对象的方法,这样的对象叫做匿名对象。

      如:new Person().showInfo();

        经常将匿名对象作为实参传递给一个方法调用。

    类的访问机制

      1.在一个类中的访问机制:类中的方法可以直接访问类中的成员变量。(例外:static方法访问非static的成员变量,编译不通过。)

       2.在不同类中的访问机制:先创建要访问类的对象,再用对象访问类中定义的成员。

    面向对象思想“落地”法则之一

    1. 关注类的的设计,即设计类的成员:属性、方法。
    2. 类的实例化,即创建类的对象。
    3. 通过“对象.属性”、“对象.方法” 执行。

    方法的重载

    在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。

    重载的特点:

     与返回值类型无关,只看参数列表,且参数列表必须不同。(参数个数或参数类型),调用时,根据方法参数列表的不同来区别。

    方法的可变个数参数:

      用数组的方式来传递可变个数的参数 (String[] args)

      用Java特有的...方式来传递可变个数的参数,这种参数在使用时与数组的使用方式相同。(String ... args)

      注意:日过一个方法有多个的形参,可变的形参(...这种的参数)一定要放在所有的参数最后。

           printInfo(String s,int d,String ... args)

    Java的实参值如何传入方法?

      Java里方法的参数传递方式只有一种,值传递。

    方法的参数传递

    1. 如果方法的形参是基本数据类型,那么实参(实际的数据)向形参传递参数时,就是直接传递值,把实参的值复制给形参
    2. 如果方法的形参是对象,那么实参(实际的对象),向形参传递参数的时候,也是把值给形参,这个值是实参在栈内存中的值,也就是引用对象在堆内存中的地址

      基本数据类型都是保存在栈内存中,引用对象在栈内存中保存的是也引用对象的地址,那么方法的参数传递是传递值(是变量在栈内存中的值)。

    包(package)

      关键字—package,其格式为:package 顶层包名.子包名

      等同于文件夹的概念,包和文件夹一样可以有多级,也就是包下可以有包和文件,多级的包使用的.分隔,例如

      com下的cn的test包,写法就是com.cn.test

    信息的隐藏和封装

      Java中通过数据声明为私有的(private),再提供公共(public)方法:getXxx()和setXxx()实现对属性的操作,以实现下述目的:

    1. 隐藏一个类中不需要对外提供的实现细节。
    2. 使用者只能通过实现定制好的方法来访问数据,可以方便的加入控制逻辑,限制对属性的不合理操作。
    3. 便于修改,增强代码的可维护性。
  • 相关阅读:
    java设计模式
    漏桶算法工具类
    http请求requestUtils
    去掉字符串中特殊符号造成的空格
    java 分布式id生成算法
    java枚举
    java 32个Java面试必考点
    配置tomcat下war包可以自压缩
    tomcat (选号)公司tomcat无页面解决
    docker 12 docker容器数据卷
  • 原文地址:https://www.cnblogs.com/xingzhuan/p/13447590.html
Copyright © 2011-2022 走看看