Java基础学习

Java安装及组成

JavaSE 标准版 (桌面程序)

JavaME 嵌入式开发

JavaEE 企业级开发 (web开发,服务端开发)

 

JDK: Java Development Kit

JRE:Java Runtime Environment

JVM:Java Virtual Machine

JDK包含JRE 和开发工具API, JRE包含JVM 和 其他核心类库

 

卸载JDK:删除安装目录,删除环境变量JAVA_HOME,删除Path下的java变量,java -version查看是否卸载

安装:下载并安装java 1.8,配置环境变量JAVA_HOME和Path,测试是否安装成功,java -version

 

javac编译, java运行类 ; 找不到或无法加载主类* 是由于大小写环境变量配置文件名要和类名保持一致

IDEA下载及安装

 

数据类型及命名规则

字母、美元$、下划线开头,后面可以是字母、美元$、下划线、数字

八大基本类型

byte(-128~127)、short、int、long(后缀L)、float(后缀F)、double、char、boolean

整数前缀 : 二进制0b,八进制0,十六进制0x

浮点数大数:BigDecimal 数学工具类

字符char: 所有字符本质是数字 (int)a = 97; '\u0061' 表示 unicode字符a

强制转换可能存在内存溢出 或者 精度问题 !!!

 

引用类型 :类,接口,数组

 

变量

  • 类变量:类里面,方法外面,从属于类,前加关键字static

  • 实例变量:类里面,方法外面,从属于对象,需先构建对象才能调用

  • 局部变量:方法里面,作用范围最小

常量

  • 加 final 关键字

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

首字母小写和驼峰原则:类成员变量、局部变量、方法名

 

运算符

位运算效率极高

int a = 10;
int b = 20;
System.out.println(a + b + " ");   // 30
System.out.println(" " + a + b);   // 1020

 

运算顺序(优先级):

算术运算符 +、-、*、/、%、++、--

赋值运算符 =

关系运算符 >、<、>=、<=、==、!=、instanceof

逻辑运算符 &&、||、!

位运算符 &、|、^、~、>>、<<、>>>

条件运算符 ? :

扩展赋值运算符 +=、-=、*=、/=

 

导包及其他基础

ctrl + D 复制当前行到下一行

公司域名倒置作为包名

package import ** 导包

cmd里生成帮助文档

javadoc -encoding utf-8 -charset utf-8 Hello.java

IDEA 的 Tools 下 Generate JavaDoc 生成帮助文档

反编译:将class文件拖到java文件所在位置,在IDEA打开,实现反编译

 

  • Scanner 的 next()、hasNext()、nextLine()、 hasNextLine() 还有 hasNextInt()、hasNextFloat()

  • switch语句的变量类型为 byte、short、int、char、String,case标签必须为字符串常量或字面量

  • 可变参数:可变参数必须是最后一个参数,且只能有一个可变参数

    public void sum(int n1, double... n2) { }
    ​
    sum( 10, new double[]{10.1, 20.2, 30.0} );
  • 递归:递归头:什么时候不调用自身方法

    递归体:什么时候需要调用自身方法

  • 数组本身就是对象,位于堆中,无论元素是原始类型还是引用类型

    Arrays.toString(a);
    Arrays.sort(a);
    Arrays.fill(a, 0);
    Arrays.fill(a, 2, 4, 0);

     

OOP

Alt + enter 补全变量定义

Alt + insert 调出构造器、重写方法等

 

OOP 全称 Object-Oriented Programming

Java 为 值传递

面向对象的本质:以类的方式组织代码,以对象的方式组织(封装)数据

new关键字本质是在 调用构造器,构造器用来初始化值

 

  • 封装:属性私有,get / set,提高程序安全性,隐藏实现细节,统一接口,提高可维护性

  • 继承:只有单继承,this() 和 super() 构造方法必须放在第一行,且两者不能同时调用

  • 多态:存在继承关系,方法重写,父类的引用指向子类

  • 方法重载:方法名一样,参数的数量、类型、顺序不一样,不要求返回类型

  • 方法重写:子类重写父类 非静态 方法,方法名一样,参数列表必须一样,修饰符范围可扩大不可缩小异常范围可缩小不能扩大

  • public > protected > default > private

// OOP原则: 组合 大于 继承              
// 面向过程 → 对象 → 内部类
class A extends B{
   // 继承
}
class A {
   // 组合
   public B b;
}

抽象类

// 抽象类不能new,抽象类可以包含普通的方法
// 抽象方法必须在抽象类中
abstract class Action{
   public abstract void run();
}
​
abstract class A extends Action{
​
}

接口

// 接口就是规范,本质是契约
// 接口定义的方法默认:public abstract
// 接口定义的属性默认:public static final
// 接口不能被实例化,可实现多接口
interface UserService{
   public static final int AGE = 10;
   public abstract void run();
   void hello();
}
interface Timer{
   void jump();
}
​
class UserServiceImp implements UserService, Timer{
​
   @Override
   public void run() {
  }
​
   @Override
   public void hello() {
  }
​
   @Override
   public void jump() {      
  }
}

内部类

// 成员内部类:在成员的位置,没有static修饰的类
// 静态内部类:在成员的位置,有static修饰的类
​
// 局部内部类:在方法里面,有名字的类
// 匿名内部类:在方法里面,没有名字的类,比如匿名实现接口的类

异常

// Throwable 类 包含 Error 类 和 Exception 类
// ctrl + alt + T 快捷键调出选择 try ... catch
// alt + enter 提示补充信息或者其他信息
​
// 方法上抛出异常 :void test() throws ArithmeticException {}
// 方法里面 :throw new ArithmeticException();

 

posted on 2022-02-27 17:35  木非辛  阅读(32)  评论(0)    收藏  举报