文章目录
#第一章 JAVA概述
java的主要特征
-
简单
-
动态
-
高性能
-
跨平台
Java程序运行在虚拟机之上,Java虚拟机中的Java解释器用来解释执行Java编译器编译之后的程序
java源代码(*.java)-> java编译器 -> 字节码(*.class)
字节码是一种近似于机器码的中间码
-
面向对象
java是面向对象的语言:
java是基于信息隐藏和抽象数据类型概念的纯面向对象的语言
java中每个对象封装数据和方法,而方法实施对数据的处理
java中可以通过继承、组合机制实现代码复用
-
健壮性
-
安全
-
多线程
-
分布式
java的应用平台
-
桌面应用开发:javaSE
为台式机和工作站提供一个开发和运行的平台,是桌面开发和低端商务应用的解决方案
-
企业级开发:javaEE
-
手机等移动应用开发:javaME
是为机顶盒、移动电话和PDA之类嵌入式消费电子设备提供的Java语言平台,包括虚拟机和一系列标准化 的Java API
Android开发:Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发
java环境中的几个概念
- JVM:java虚拟机
- JRE:java运行时的环境
- JDK:Java开发工具包 (java开发环境) JDK = JRE + Tools&Java APIs
java程序的基本组成是‘类’,方法不可以单独存在
类体和方法体都是在一对大括号中定义的
public class Dome{
public static void main(String[] args){
}
}
集成开发环境的概念
集程序编辑、编译、运行调试、打包、发布等功能于一体的软件
java注释
- 块注释(/*注释内容*/)
- 行注释(/注释内容/)
- 文档注释(/**注释内容*/)
第二章 JAVA基础
输入、输出
- String nextLine() //获取用户输入一行信息
- boolean nextBoolean() //获取用户输入的一个boolean类型的值
- short nextShort() //获取用户输入的一个short类型的值
- int nextInt() //获取用户输入的一个int类型的值
- long nextLong() //获取用户输入的一个long类型的值
- double nextDouble() //获取用户输入的一个double类型的值
public class Dome{
public static void main(String[] args){
Scanner scanner = new scanner(System.in);
int num = scanner.nextInt();
}
}
标识符
标识符组成:
- 由字母、数字、下划线(_)、美元符号(&)组成,不能以数字开头
- 大小写敏感、没有规定最大长度
- 不能是关键字和保留字
命名约定
- 类和接口:每个单词的首字母大写,含有大小写
- 方法:字母小写,其余单词的首字母大写,含大小写。尽量少用下划线
- 常量名:基本数据类型的常量名使用全部大写字母,单词与单词之间用下划线分隔。对象常量可以大小写混写
- 变量名:可大小写混写,首字符小写,不用下划线,少用美元符号。给变量命名时尽量做到见名知义
数据类型
基本类型
- 整数类型 byte(1), short(2), int(4), long(8)
- 浮点类型 double(8), float(4)unicode编码
- 字符类型 char(2)
- 布尔类型 boolean
引用类型
类、接口、数组、枚举
for增强
public class Dome{
public static void main(String[] args){
int[] arr = {1,2,3,4};
for(int key : arr){
System.out.println(key);
}
}
}
第三章 数组
初始化
public class Dome{
public static void main(String[] args){
int[] arr = {1,2,3,4};
int arr[] = {1,2,3,4};
int[] arr = new Arrays[4];
int[] arr[] = int[][] arr = int arr[][] = {{1,2,3},{4,5,6}};
int arr[][] = new Arrays[2][3];
}
}
Arrays方法
- copyOf 实现数组的复制
- fill 实现数组元素的初始化
- sort 实现数组的排序
- binarySearch 实现排序后的数组元素查找
第四章 类和对象
概念
以功能为基础,采用自顶向下,逐步细化的方法
对象:现实世界中某个具体的物理实体在计算机逻辑中的映射和体现
类:是一种抽象的数据类型,是同种对象的集合与抽象,是具有共同行为和属性的若干对象的统一描述体
类体可以包含成员属性和成员方法两部分
实例化
概念:将数据及其操作封装为类,以类的对象作为程序的基本元素,通过向对象发送消息,从而调用相应方法完成各种功能
public class Studnet{
public int num;
public String name;
public Student{
}
public void study(){
System.out.println("study");
}
}
public class Dome{
public static void main(String[] args){
Student stu = new Student();
}
}
面向对象特点
- 对象为基本元素
- 数据安全
- 代码的维护量小、代码的重用率高
- 程序 = 对象+对象+对象+……
三大特性
- 封装
- 继承
- 多态
方法传参
- 值传递
- 引用传递
方法重载
同一个类中两个或以上的同名方法,参数类型、个数或顺序不同,称为方法的重载
方法重载的依据
- 方法名相同
- 参数列表必须不同
注意:
- 返回值类型可以不同(返回值类型不作为重载的依据)
- 是否是静态的也不作为重载依据
- 重载的方法之间可以互相调用
public class Dog{
private String name;
public void bark(){
System.out.println("wang");
}
public String bark (String s,int a){
return s+a;
}
public String bark(int a,String s ){
return a+s;
}
}
成员属性的默认值
构造方法
public class Student{
public int num;
public String name;
public Student(){
}
public Student(int num,String name){
this();//调用空的构造方法
this.num = num;
this.name = name;
}
public Student self(){
return this;
}
}
public class Dome{
public static void main(String[] args){
Student stu1 = new Student();
Student stu2 = new Student(1,"ykc");
}
}
垃圾收集器
- 空引用
- 隔离引用
第五章 类的继承
隐藏同名积累成员
super
只能访问基类非private类型的属性
super()或super(参数)调用基类的构造方法,只能放在派生类构造方法的第一行
方法重写
重写的主要优点是能够定义某个派生类型特有的行为
规则
- 重写的方法返回值类型是基类方法返回值类型的子类或者相同
- 重写的方法具有相同的方法名
- 重写的方法参数列表必须相同
- 不能重写被标识为final的方法
- 重写的方法不能缩小访问权限
- 不能重写基类私有的方法
意义
-
重写方法可以实现多态,用基类的引用来操纵派生类对象,但是在实际运行中对象将调用派生类重写的方法。
-
基类的引用可以指向派生类的对象:向上转型。
-
好处:
–可以使用派生类强大的功能。
–可以抽取基类的共性。
-
指向派生类对象的基类类型的引用可以调用基类中定义的属性和方法。
-
指向派生类对象的基类类型的引用无法调用派生类中定义而基类中没有的方法。
public class Person {
public String name;
public String sex;
public int age;
public Person() {
}
public Person(name,sex,num) {
this.name = name;
this.sex = sex;
this.age = age;
}
public String action(String action) {
return action;
}
}
public class Student extends Person {
public String num;
public Student() {
super();
}
public Student(String name,String sex,int age,String num) {
super(name,sex,age);
this.num = num;
}
public String getName(){
return super.name;
}
public String action(String action){
return action+action;
}
}