美文网首页
JAVA基础

JAVA基础

作者: csuhan | 来源:发表于2019-06-27 09:42 被阅读0次

JDK安装

安装JDK一般需要在oracle官网下载JDK,然后设置JAVA_HOME,设置path,此处推荐安装https://adoptopenjdk.net/的OpenJDK,其提供Windows、Linux、Mac等平台的MSI安装包,直接下载安装即可完成JDK配置。

IDE使用

作为一个JAVA新手,根据网上的帖子,电脑内存大(8GB+)推荐使用Idea,内存小推荐使用Eclipse。而像我目前仅练习基础JAVA,因此使用的VSCode+Java Extension Pack的方式,其可以通过这里Download Visual Studio Code Java Pack Installer
快速安装所需的VSCode、JDK及扩展包。

JAVA程序基础

JAVA程序基本结构

JAVA程序是完全的面向对象编程,因此其基本单位也是类。

//单行注释
/*
多行
注释
*/
public class Hello{
  public static void main(String[] args){
    System.out.println("Hello world");
  }
}

基本数据类型

  • 整数 byte,short,int,long
  • 浮点:float,double
  • 字符类型 char
  • 布尔类型 boolean
    对于较长的数据类型,可以使用var关键字,如var sb = new StringBuilder()会自动解析为StringBuilder sb = new StringBuilder()
    String类型数据可以通过:
  1. 直接构建:String stra = "hello"
  2. 通过构造函数构建:String strb = new String("hello")

String进行比较时,可通过stra.equals(strb)来比较,而stra==strb仅比较两者的内存地址。
为了避免出现 NoPointerException 问题,在字符串比较时,可以采用"hello".equals(stra),而不是strs.equals("hello")

String直接赋值时,只会开辟一块内存空间,并且会自动保存在变量池中以供下次重复使用,而构造函数时,不会自动入池,需要调用intern()方法手动入池。

数组定义

  1.  int[] s = new int[5];
     s[0]=1;s[1]=2;...
    
  2.  int[] s = new int[]{1,2,3,4,5};
    
  3.  int[] s = {1,2,3,4,5};
    

对于字符串数组,由于其是引用类型,因而尤其特殊的地方。

String[] names={"XYZ","abc","mnp"};
String s = names[1];
names[1]="cat";
System.out.println(s);
//输出abc

这是因为String作为引用类型,指向的是其内存地址,而不会在原地址改变其内容。

流程控制

for循环有两种,一种是常规的for(int i=0;i<3;i++),另一种是for each形式的for(int i:names)
数组排序:

import java.util.Arrays
Arrays.sort(arr)

面向对象编程

一个class可以包含多个field

class Person{
  public String name;
  public int age;
}

其中字段的修饰方法有publicprivate,public代表字段是公开可访问的,private代表其是私有的,仅通过类别内部访问。
类内部的方法、字段都可以通过this来访问,如this.name
构造方法与类名相同,可以设置不同的初始化参数,可以有多个构造方法。
方法名相同,参数不同即为重载。

继承

class Person {
    private String name;
    private int age;

    public String getName() {...}
    public void setName(String name) {...}
    public int getAge() {...}
    public void setAge(int age) {...}
}

class Student extends Person {
    // 不要重复name和age字段/方法,
    // 只需要定义新增score字段/方法:
    private int score;

    public int getScore() { … }
    public void setScore(int score) { … }
}

java仅支持单继承,即每个类只有一个父类,但可以通过接口(interface)实现多继承。
protected限定的字段和方法仅能够在继承树内部访问,其介于publicprivate中间
子类继承父类时可以通过super()调用父类方法,如super()表示父类构造方法,super.fieldname访问父类字段。

向上转型

Person p = new Student() 即 将Student转为Person类型
而向下转型则不一定成功,原因在于其父类不一定有子类的方法。
如果不希望一个类被继承,可以使用final字段,从而限制其继承。

抽象类

如果某个类仅用于定义方法,可以使用抽象类

abstract class Person {
    public abstract void run();
}

抽象类不能够被实例化。

接口

接口interface:如果一个抽象类没有字段,所有方法全部都是抽象方法,则可以定义为接口。一个类可以实现多个接口。

class Student implements Person, Hello { // 实现了两个interface
    ...
}

接口之间可以是继承(extends)关系。

静态字段和静态方法

实例字段在每个实例中都有自己的一个独立“空间”,但是静态字段只有一个共享“空间”,所有实例都会共享该字段。
包必须与目录层次相同。
classpath是JVM用到的一个环境变量,它用来指示JVM如何搜索class。

相关文章

  • Java 基础

    Java 基础01Java开发入门 Java 基础02Java编程基础 Java 基础03面向对象 Java 基础...

  • 技术体系

    一,java核心 java基础,jvm,算法,多线程,设计模式 Java基础:java基础相关,全栈java基础 ...

  • 面试题汇总

    1.Java基础面试问题 Java基础之基础问题 Java基础之面向对象 Java基础之数据结构 Java基础之I...

  • 【Android】知识点汇总,坚持原创ing

    Android基础 Java基础 Java基础——Java内存模型和垃圾回收机制 语法基础 语法基础——C语法基础...

  • Java基础:反射

    反射注解动态代理相关阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 ...

  • Java基础:注解

    系列阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 1. 概述 注解...

  • Java基础:动态代理

    系列阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 概述 在运行时,...

  • Java 集合类原理

    Java基础——HashMap源码分析 Java基础——HashSet源码分析 Java基础——HashTable...

  • Java基础:类加载器

    系列阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 1. 什么是类加...

  • java基础(一)-String、StringBuffer、St

    java基础-String、StringBuffer、StringBuilder java基础小白,初学java,...

网友评论

      本文标题:JAVA基础

      本文链接:https://www.haomeiwen.com/subject/oelhcctx.html