zoukankan      html  css  js  c++  java
  • Java总结

    Java基础

    • JVM :java虚拟机
    • JDK :java开发工具包,包含JRE
    • JRE :java运行环境

    java的体系结构

    • JavaSE :标准版
      定义了Java的基本语法

    • JavaME :移动版
      以前诺基亚用
      现在GPS和机顶盒用这个

    • JavaEE : 企业版
      可以分为:

    1. B/S :基于浏览器和服务器的架构模式
    2. C/S : 基于客户和服务器的架构模式

    javaEE还可以用于JavaWeb开发——>全栈工程师

    每一次修改代码,都必须重新编译。


    Java代码规范

    1. 文件名与类名必须一致;
    2. 类名的首字母大写;
    3. main函数是程序入口,四个元素必不可少:
      public、static 、void 、 String [] args;
    4. 一行只写一条语句;
    5. 代码缩进;
    6. 常量的变量名全部大写
    • 内存地址是16进制数据;

    • 变量名一定要符合规则:
      驼峰式命名法:第一个单词全部小写,其他单词的首字母大写

    • java的八种基本数据类型:

    1. byte : 1个字节,8位;
    2. short : 2个字节, 16位;
    3. int : 4个字节,32位;
    4. long : 8个字节,64位;
    5. float : 4个字节,32位;
    6. double : 8个字节,64位;
    7. char : 2个字节,16位;
    8. boolean :1/8个字节,1位。

    int可以赋值给float,反之不亦然;
    强制类型转换会砍值;

    Scanner

    1. import java.util.Scanner;
    2. Scanner scanner = new Scanner(System.in);
    3. scanner.nextInt();
    • 只有== 和!= 可以施法于任何数据类型,其他关系运算符只能用于数值类型;
    • 短路与和短路或比单纯的与和或效率更高;
    • String类型的值判断是否相等不能用==,要用equals方法进行判断;
    • switch支持的数据类型:int、short、byte、char、枚举类型、String类型;

    数组

    • 数组长度一旦确定,就不能修改;
    • null只能赋给引用类型;

    数组工具类

    java.util.Arrays
    提供了操作数组的方法,例如排序,查询等。

    boolean Arrays.equals(array1, array2);
    比较两个数组是否相等

    Arrays.sort(array);
    变成升序排序。没有返回值。

    String str = Arrays.toString(array);

    Arrays.fill(array, val);
    将数组里面的值全部变成val。

    Arrays.copyOf(array, length);
    扩展伸缩数组,返回一个新的数组。

    int Arrays.binarySearch(array, val);
    返回查询值在数组里面的最后一个匹配值的下标。
    返回负数就证明找不到。

    Java高级

    程序在运行期:

    1. 将编写好的类加载到JVM中,有了模板;
    2. 根据需求,通过模板(类)来创建对应的对象,完成业务需求。

    类与对象的区别:

    1. 类是静态的,写完之后就存在于硬盘中。
    2. 对象是动态的,随着程序的运行而创建,同时随着程序的关闭而销毁。
    3. JVM中类只有一份,对象可以无数份也可以没有。

    垃圾回收机制GC:

    是一个独立的巡查线程,GC是一个定时任务,隔一段时间执行一次。

    为什么null不能赋值给基本数据类型?

    因为null是地址,而基本数据类型在栈中只能存数值不能存地址。

    每个类默认有无参构造函数,当你自己定义一个有参构造函数后,无参构造函数就消失了!

    eclipse可以自动生成toString()啊,构造函数什么的,在source选项里面!

    传参

    • 基本数据类型传递的是变量的值;
    • 引用类型传地址;

    this

    只能写方法体里面。
    通常情况下,在类的方法中的具体代码,this可加可不加。
    当方法中的参数和属性名一致时,通过参数名无法区分参数和属性时,需要通过this来修饰属性。

    this(参数) 调用有参构造;
    this() 调用无参构造;
    它们只能在构造函数内调用。
    并且this()必须写在方法体内第一行!

    方法重载

    1. 必须在同一个类中;
    2. 方法名相同;
    3. 参数列表不同;
    4. 与返回值无关;
    5. 与访问权限修饰符无关。

    动态参数

    如何让参数个数不固定?
    在参数列表中数据类型后面加上三个点。
    动态参数实质上是一个数组,根据外部传入的参数个数来动态生成一个数组,记录所有的参数。

    成员变量和局部变量

    成员变量:定义在类中,方法体外的变量,属性
    局部变量:定义在类中同时也存在于方法体中的变量

    面向对象的四大特征

    封装、继承、多态、抽象

    封装

    定义

    将类的某些信息隐藏在类的内部,不允许外部程序直接访问这些信息,外部只能通过该类提供的特定方法来实现对隐藏信息的操作和访问。

    如何实现

    1. private
    2. setter和getter
    3. setter里面放一点控制语句

    有工具可以自动生成setter和getter

    static静态修饰符

    可以修饰:

    1. 成员变量:将之变成静态变量,使之可以通过类来访问;
    2. 成员方法:同上;
    3. 代码块:写在类中,方法之外,并且用花括号包裹起来的一段代码就叫做代码块。当程序访问该类时,自动执行代码块中的语句。
      静态代码块:当Java虚拟机(JVM)加载该类时,执行该代码,并且只执行一次。如果有多个静态代码块,那么按顺序执行。

    在静态方法中比如main,不能访问该类的非静态属性,可以访问该类的实例化对象的非静态属性。

    main中不能访问该类的非静态方法,可以访问对象的非静态方法。

    静态方法如main里面不能用this!

    类的构造方法用于创建类的实例对象,类的静态代码块用于初始化类,给类的静态变量赋值

  • 相关阅读:
    关于Hibernate(JPA)关联关系加载的默认值
    (转)存储过程语法及实例
    网页qq
    git的代理配置
    The problem with POSIX semaphores 使用信号做进程互斥必看
    git merge conflict的处理
    转载:telnet协议详细描述
    Mac OS X terminal滚动慢的问题
    进程间通讯 信号量函数 semget() semop() semctl()
    .hpp文件和.h文件的区别
  • 原文地址:https://www.cnblogs.com/endymion/p/9577010.html
Copyright © 2011-2022 走看看