Java 学习

参考网址:菜鸟教程 - 学的不仅是技术,更是梦想! (runoob.com)

1.Java环境配置可参考菜鸟网站Java 开发环境配置 | 菜鸟教程 (runoob.com)

 (1)Java特点:简单、面向对象、分布、解释型、平台独立、可移植等

 (2)开发步骤:编辑源程序(得到源代码.java);编译源程序(得到字节码.class);执行程序。

(3)Java是面向对象的(即封装性、继承性、多态性):我们可以理解为所有东西都可以抽象成不同的类,比如书是一个类、电脑是一个类;每个类都含有各种性质,我们将其称之为成员变量,比如书的长度、宽度、售价等等;知道是什么有什么之后我们就要设置一些方法去规定它怎么用,这就是成员方法。对象是类的实例,比如一本特定的书。

2.基本语法

(1)标识符规则(字母数字下划线,不能数字开头)、数据类型(8种,6种数据类型,1种字符类,1种布尔类)、运算符与表达式和其他语言大同小异。注:char类型是单一的字符型,长度为16位Unicode即两字节

介绍参考:Java 基本数据类型 | 菜鸟教程 (runoob.com)

 (2)一个简单Java程序的基本结构包含包名、类名,如果想对改类进行测试,可以在类里面写一个main函数;一个class文件里可以有多个类,但只能有一个public类且与文件重名。

//包名,默认default
package javatest1;

//类名,带public时必须与java文件重名
public class Test {
    //类里面的一个方法
	public static void display() {
		System.out.print("这是一个java程序");
		}
//main方法必须写在类里面,且为static
	public static void main(String[] args) {
		display();
	}
	}

 (3)类、成员变量、成员方法的定义

  • 首先了解一下三个访问权限:public(公有的,任何人都可以访问并更改)、private(私有的,只有类内部可以访问并更改)、protected(受保护的,外界只能访问不能更改)
  • 类的定义

    [public][abstract|final] class ClassName

    [extends SuperClass] [implements InterfaceNameList]{

         // 成员变量声明

         // 成员方法声明

    }

    • 修饰符:public(任何包都可以访问)或缺省(只有包里面可以访问)
    • class ClassName:使用class关键字,ClassName为类名,一般以大写字母开头
    • extends SuperClass:继承性,SuperClass是父类类名。Java是单继承即一个类只能有一个父类
    • implements InterfaceNameList:接口,InterfaceNameList是接口名,一个类可以实现多个接口,若实现多个接口,接口名中间用逗号分开
  • 成员变量的定义

    [public|protected|private][static][final][transient][volatile]

    type  variableName[=value];

    • 变量的访问修饰符:public|protected|private为变量的访问修饰符
    • 实例变量和类变量:static修饰称为类变量又称为静态变量,否则为实例变量
    • 变量类型和变量名: type variableName用来指定成员变量的类型和变量名
    • 使用final修饰的变量叫作最终变量,也称为标识符常量。常量可以在声明时赋初值,也可以在后面赋初值,一旦为其赋值,就不能再改变了
    • 用transient 修饰的变量称为临时变量
    • 用volatile修饰的变量称为共享变量。在多线程的程序中,共享变量可以被异步修改
  • 成员方法的定义

    [public|protected|private][static]

      [final|abstract][native][synchronized]

      returnType  methodName ([paramList]) [throws ExceptionList]{

      //方法体

    }

    ​​​
    • 参数和返回值不做说明
    • 访问修饰符public、protected和private
    • 实例方法和类方法:没有用static修饰的方法称为实例方法,用static修饰的方法称为类方法,只能通过类名调用
    • final和abstract方法用final修饰的方法称为最终方法,最终方法不能被覆盖。方法的覆盖与继承有关。用abstract修饰的方法称为抽象方法
    • synchronized和native修饰符用synchronized修饰的方法称为同步方法。同步方法主要用于开发多线程的程序。用native修饰的方法称为本地方法,本地方法用来调用其他语言(如C语言)编写的函数
    • 声明方法抛出异常如果方法本身对其抛出的异常不处理,可以声明方法抛出异常。异常的声明使用throws关键字,后面给出异常名称的列表

    (4)流程控制

  • if...else.../if...
  • condition ? expr1:expr2
  • switch(expression){case value1:  statements  [break;]......default: statements}
  • while,do-while(注意分号),for,辅助语句:break;continue;

    (5)数组

  • 声明:type [] arrayName ;   type arrayName [] ;
  • 创建:arrayName = new type[arraySize];eg. double[] score = new double[5];
  • 初始化:String[] words = {"Java", " is", " cool"};   double[] score = new double[]{79, 84.5, 63,90, 98,};加逗号方便扩充
  • 访问和遍历:for(type identifier:expression) {  // 循环体  }
  • 作为形参传入用的是引用地址,也就是说形参变实参也会变
  • 多维数组
    • 声明:  type [][] arrayName  type [] arrayName [];  type arrayName [][];
    • 创建:int [][]arr = new int[2][3];如果把arr看成是一个二维矩阵,arr[]里面存储的是每行的首地址,即a[0][0]、a[1][0]......的地址
  • 基本排序算法:冒泡排序、选择排序
  • 查找方法:二分法

3.一些常用的类和概念

(1)String类

字符串广泛应用 在 Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。

(2)StringBuffer 和 StringBuilder 类

  • 如果需要对字符串进行修改推荐使用 StringBuffer
  • StringBuilder 和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)
  • StringBuffer常用方法
序号方法描述
1public StringBuffer append(String s)
将指定的字符串追加到此字符序列。
2public StringBuffer reverse()
 将此字符序列用其反转形式取代。
3public delete(int start, int end)
移除此序列的子字符串中的字符。
4public insert(int offset, int i)
将 int 参数的字符串表示形式插入此序列中。
5insert(int offset, String str)
将 str 参数的字符串插入此序列中。
6replace(int start, int end, String str)
使用给定 String 中的字符替换此序列的子字符串中的字符。

 (3)ArrayList类

ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素,它是允许重复的。

  • 使用方法
    import java.util.ArrayList; // 引入 ArrayList 类
    
    ArrayList<E> objectName =new ArrayList<>();  // 初始化
    
  •  常用方法
    方法描述
    add()将元素插入到指定位置的 arraylist 中
    addAll()添加集合中的所有元素到 arraylist 中
    clear()删除 arraylist 中的所有元素
    contains()判断元素是否在 arraylist
    get()通过索引值获取 arraylist 中的元素
    indexOf()返回 arraylist 中元素的索引值
    removeAll()删除存在于指定集合中的 arraylist 里的所有元素
    remove()删除 arraylist 里的单个元素
    size()返回 arraylist 里元素数量
    isEmpty()判断 arraylist 是否为空
    set()替换 arraylist 中指定索引的元素
    sort()对 arraylist 元素进行排序
    toArray()将 arraylist 转换为数组
    toString()将 arraylist 转换为字符串

(4)HashMap类 

  • HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。使用方法如下:
    // 引入 HashMap 类      
    import java.util.HashMap;
    //初始化,这只是个例子
    HashMap<Integer, String> Sites = new HashMap<Integer, String>();
  • 常用方法
    方法描述
    clear()删除 hashMap 中的所有键/值对
    isEmpty()判断 hashMap 是否为空
    size()计算 hashMap 中键/值对的数量
    put()将键/值对添加到 hashMap 中
    remove()删除 hashMap 中指定键 key 的映射关系
    containsKey()检查 hashMap 中是否存在指定的 key 对应的映射关系。
    containsValue()检查 hashMap 中是否存在指定的 value 对应的映射关系。
    replace()替换 hashMap 中是指定的 key 对应的 value。
    get()获取指定 key 对应对 value
    forEach()对 hashMap 中的每个映射执行指定的操作。
    values()返回 hashMap 中存在的所有 value 值。
    size()添加键值对到 hashMap 中

(5) HashSet类

  • HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合,HashSet 允许有 null 值。使用方法如下:
    import java.util.HashSet; // 引入 HashSet 类
    HashSet<String> sites = new HashSet<String>();

  • 常用方法与 HashMap类似

(6)抽象类 

不是所有的类都是用来描绘对象的,抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用

  • 定义:使用 abstract class 来定义抽象类
    public abstract class ClassName{
    //成员变量
    //成员方法
    }
  •  抽象方法:bstract 关键字同样可以用来声明抽象方法,抽象方法只包含一个方法名,而没有方法体,例如:public abstract double computePay();
  • 注:抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类; 抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能;构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法; 抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。

(7)接口

  • 与抽象类的区别:接口中的方法没有方法体;接口中的成员变量只能是 public static final 类型的;接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法;一个类只能继承一个抽象类,而一个类却可以实现多个接口。
  • 接口的声明:
    [可见度] interface 接口名称 [extends 其他的接口名] {
            // 声明变量
            // 抽象方法
    }

  • 接口的使用:
    ...implements 接口名称[, 其他接口名称, 其他接口名称..., ...] ...
  • 接口的继承与多继承 
  • 如果实现接口的类不是abstract类,则在类的定义部分必须实现接口中的所有抽象方法,即必须保证非abstract类中不能存在abstract方法。
  • UML图(虚线表示接口,实现表示继承)

4.文件访问(no)

(1)绝对路径与相对路径

  • 绝对路径是完整的一条路径,相对路径是半路出来的路径;假设有一个坐标轴,轴上有个点A和原点B,对B的长度就是绝对,对A的长度就是相对的

(2)一些类

  • File:是用来访问文件,文件属性和文件系统相关的信息,并且File类是无法访问File的具体内容
  • Paths:通过get()方法返回一个Path对象,Path用于表示文件路径和文件
  • Files:提供了大量处理文件的方法,例如文件复制、读取、写入,获取文件属性、快捷遍历文件目录等

 (3)输入输出流

按照流的方向分为输入流(InputStream)与输出流(OuputStream)

输入流:只能读取数据,不能写入数据。

输出流:只能写入数据,不能读取数据。

5.数据库访问

(1)使用JDBC API连接和访问数据库,一般分为以下5个步骤:

加载驱动程序、建立连接对象、创建语句对象、获得SQL语句的执行结果、关闭建立的对象,释放资源。

  • 32
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值