Java基础知识总结

1.Java环境变量配置

  系统变量JAVA_HOME:直接复制jdk目录,不要在末尾加逗号或分号

  系统变量Path:执行dos命令,系统会在path指定的路径中寻找该命令对应的可执行文件

  classpath:jdk5.0以后可以不配置

  修改环境变量,重启cmd窗口

2.第一个Java程序

  在目录下新建.java文件

  cmd窗口更改目录

  java 类名执行,结果是: Could not find or load main class 类名

  解决办法 使用命令: java -cp . 类名

                java -cp E:\MyJavaCode 类名

                java -classpath . 类名

  Java命令运行有包名的类名:

            编译:javac -d . 类名.java

            运行:java 包名.类名  args 空格分隔

            反编译:javap 类名.class

  自定义classpath,把引用的jar引进来,这样关联的类就不会缺失了:

            javac -encoding UTF-8 -classpath E:\kuaipan\study\jar\lucene.jar GraphDatabaseReader.java

3.第一个Java程序深入学习

    (1)Java大小写敏感

    (2)一个.java文件可以有多个类,但文件名必须与public修饰的类名相同

    (3)一个java文件不能有多个public修饰的类

    (4)多行注释不能嵌套

4.标识符

    (1)标识符以字母、下划线或美元符号$开头

    (2)标识符的其他部分可以是字母、下划线或美元符号$和数字的任意组合(只能为这四种,不能有其他符号)

    (3)大小写敏感,长度无限制

    (4)不能为java的关键字

    (5)java内部采用Unicode字符集

5.字符集

    (1)ISO8859-1

        西欧字符集

    (2)BIG5

        台湾大五码,表示繁体中文

    (3)GB2312

        大陆使用最早、最广的简体中文字符集

    (4)GBK

        GB2312的扩展,可以表示繁体中文

    (5)GB18030

        最新GBK的扩展,可以表示汉字、维吾尔文、藏文等中华民族字符

    (6)Unicode

        国际通用字符集

6.java基本数据类型

    (1)基本数据类型8种:

    6.1数值型:6.1.1:整数类型byte(1字节:-128~127) ,short(2字节:-2^15~2^15-1),int(4字节:-2^31~2^31-1, 数值型默认是int类型),long(8字节:-2^63~2^63-1);

    6.2.2:浮点类型float(4字节),double(8字节,浮点型默认是double类型)。6.2字符型:char(2字节)  6.3布尔型:boolean(1位)

    (2)引用数据类型(4字节):类(class),接口(interface),数组

    (3)进制

      默认十进制

      八进制 int a = 010;

      十六进制 int a = 0x10;

      java语言的整型常数默认为int型,声明long型常量可以在后面加L

      long a1 = 123;//不出错,int的表示范围内

      long a2 = 123456234789L;//不加L会出错,已经超出int的表示范围

    (4)浮点数

      默认double(8字节) 在成员变量里默认是0.0

      float(4字节)

      float f = 6.28;//编译报错,损失精度

      float f = 6.28F;//编译通过

      浮点数存在舍入误差,如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类

    (5)字符型

      5.1 char类型表示在Unicode编码表中的字符

      5.2 java中使用转义字符'\',来将其后的字符转变为其他的含义

      5.3 字符可以直接当作数字来用

      5.4 整数转成字符需要强制转型

    (6)布尔型

      只占一位

7.基本数据类型转换

    基本原则:容量小的数据类型可以转换为容量大的数据类型,容量指的是表述的范围

    可以自动转换:byte->short ,short->int ,char->int, int->long, int->double,float->double

    转换会损失精度:int->float, long->float, long->double

    int可以直接赋值给short,char,byte,但是要在它们能表示的范围内

    类型提升问题:做所有二元运算(+-*/%)都会有类型提升问题,结果会自动转为容量大的类型,就需要强制类型转化

    jdk1.7新特性:下划线分隔

8.变量

    变量是内存中最基本的存储单元

    8.1 本地变量,局部变量 写在一个方法内.使用前必须声明和赋值

    8.2 常量 只能被赋值一次  一般命名时全部大写

    命名规范:

    变量、方法名:首字母小写,驼峰原则

    常量:全大写

    类名:首字母大写,驼峰原则

9.运算符

    位运算符

    ~--取反  &--与 |--或 ^--异或

    "+"两边的操作数只要有一个是字符串类型,系统会自动将另一个操作数转换为字符串然后进行连接

10.控制语句

    if语句不加括号,只对接下来的第一条语句有效

    switch语句每case语句后都要加一个break,防止发生case穿透

    JDK7.0新特性switch表达式可以是字符串

    带标签的循环,类似goto语句:

      示例:

      outer:for (int i = 101; i < 150; i++) {

      for (int j = 2; j < i/2; j++) {

        if (i % j == 0) {

          continue outer;

        }

      }

      System.out.print(i+" ");

      }

11.方法

    形式参数:在方法调用时用于接收外界输入的数据

    实参:调用方法时世界传给方法的数据

    return作用:(1) 返回值 (2)结束方法运行

    java中只有值传递

12.递归

    方法无限调用自己,会引起栈溢出异常

13.包(package)

    解决类重名问题,方便管理类,合适的类位于合适的包

    包名:域名的倒着写,别人很容易知道这些包来自哪个公司

    注意: com.lcw与com.lcw.action是两个独立的包,没有包含关系,只是逻辑上看起来后者是前者的一部分

14.面向对象

    以类的方式组织代码,以对象的方式组织(封装)数据

    属性的默认值:数值型的默认是0,char:\u0000, boolean: false,所有引用类型:null

    方法里定义的变量:需要手动初始化

15.内存分析

      栈:存放局部变量 (自动分配连续的空间,先进后出)

      堆:存放new出来的对象(不是连续的存储空间)

      方法区:也是堆,存放类的代码(字节码)信息,static常量、常量池

      要点:1.new出的对象引用放在栈区,具体代码放在堆区,每执行一个方法设置一个栈帧,数值型常量可以直接赋值。引用型常量需要从方法区取值。

16.构造器

      16.1 通过new关键字调用

      16.2 构造器虽没有返回值,但不能定义返回类型(返回的类型肯定是本类),不能在构造器里调用return

      16.3 如果没有定义构造器,编译器会自动添加一个无参的构造函数

17.方法重载

      两同三不同

      - 同一个类,同一个方法名

      - 参数类型不同, 参数个数不同, 参数顺序不同

      只有返回值不同不构成方法的重载,并不是说方法的重载返回类型一定要相同

      形参名不一样也不构成方法的重载

18.static关键字

      类中,用static声明的成员变量为静态变量,或叫做类属性,类变量

      18.1 静态变量为类的公用变量,属于类,被该类的所有实例共享,在类呗载入内存时被显示初始化。静态方法中不可访问非静态成员

19.this关键字

      普通方法中,this总是指向调用该方法的对象 当前对象的引用(地址)

      构造方法中,this总是指向正在初始化的对象

      this();放在构造函数的第一句用于调用其它构造函数,也可以是带参的构造函数

      this不能用于static方法

20.Object类

      所有的类默认继承Object类

21.Super关键字

      super是直接父类对象的引用。可以通过super来访问父类中被子类覆盖的方法和属性

      每个类的构造函数的第一行默认都是super();

      每个类的方法中都有(this, super)

      main在逻辑上是与类独立的

22.继承VS组合

      "is-a"继承 "has-a"组合,从代码复用角度分析基本是相同的,is-a "是" has-a 组合

23.final关键字

      final修饰变量,是一个常量,不能被重新赋值。final修饰方法,不能被重写,但可以被重载,final修饰类,不能被继承

24.封装 private default protected public

      private:本类  default:本类 本包  protected:本类 本包 子类  public:本类 本包 子类 所有类,类的属性一般使用private ,get/set方法一般为public,boolean的get方法是:is开头

      private boolean can;

      public boolean isCan(){

        return can;

      }

      public boolean setCan(){

        this.can = can;

      }

25.多态 polymorphism

      主要用于实现动态联编,意思就是程序的最终状态只有在执行过程中才被决定而不是在编译期间就决定了。能提高系统的灵活性和扩展性

      Java中多态的实现:

          (1) 编译时类型:模糊一点,一般是一个父类,由声明时类型决定

          (2) 运行时类型:由实际对应的对象类型决定

          多态存在条件:要有继承,要有方法重写,父类引用指向子类对象

26.抽象类

      1.有抽象方法的类只能定义为抽象类

      2.抽象类不能实例化

      3.抽象类也可以包含属性、方法、构造方法

      4.抽象方法必须被子类实现 

      5.抽象类把类的设计和实现分开了

27.内部类

      1.成员内部类(可以使用private、protected、public任意进行修饰。类文件:外部类$内部类.class)

        非静态内部类必须寄存在一个外部类对象里

        静态内部类对象存在,并不一定存在对应的外部类对象

28.数组

      1.数组是相同数据类型的有序集合

      2.数组也是对象,数组元素相当于对象的成员变量

      3.数组长度是固定的

      数组的三种声明方式:

        1.Object[] os = new Object[SIZE];

        2.Object[] os = new Object[]{obj1,obj2,obj3};

        3.Object[] os = {obj1,obj2,obj3};

29.String

      String不可变字符序列

      1.trim只去除首尾的空格

      2.public final char value[];

        value数组中的值是可以变的

        public set charValue(char c , int index){

            value[index] = c;

        }

      3.通过return this实现方法链

30.多维数组

      1.二维数组可以看成以数组为元素的数组

31.File类

      文件和目录的抽象表示形式

      mkdir(); mkdirs(); mkdir 创建目录的上级目录必须存在  mkdirs 创建目录的上级目录不一定需要存在

32.Exception异常机制

      Java提供的处理程序中错误的一种机制

      抛出异常:在执行一个方法时,如果发生异常,这个方法会生成代表该异常的一个对象,停止当前执行路径,并把异常对象提交给JRE

      捕获异常:JRE得到异常后,寻找相应的代码来处理该异常。JRE在方法的调用栈中查找,从生成异常的方法开始回溯,直到找到相应的异常处理代码为止

      注意:在代码中没有错误,说明编译通过,当然不能保证运行时没有错误

      如果try catch块中有return语句

      执行顺序:

      1.执行try , catch ,给返回值赋值

      2.执行finally

      3.return语句 这个语句是程序中最后执行的!!!

      public void openFile() throws FileNotFoundException{} throws抛出异常,在其他地方调用这个方法,要处理这个异常,可以用try catch块也可以throws抛出给JRE处理,但是建议用try catch块处理! 在实际编程中使用try catch还是使用throws根据具体情况选择

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容