java
2022-01-23 本文已影响0人
wxy_7fa5
1.安装配置
1.JDK的下载和安装
下载:http://www.oracle.com
安装:D:\Develop\jdk12
JDK的安装目录
bin:该路径下存放了JDK的各种工具命令。Javac和java就放在这个目录
conf:该路径下存放了JDK的相关配置文件
include:该路径下存放了—些平台特定的头文件
jmods:该路径下存放了JDK的各种模块
legal:该路径下存放了JDK各模块的授权文档
lib:该路径下存放了JDK工具的一些补充JAR包
2.环境变量配置
右键我的电脑,属性,高级系统设置,环境变量,新建系统变量:
JAVA_HOME D:\Develop\jdk12
编辑系统变量中的path:%JAVA_HOME%\bin;
3.常用DOS命令
win+R,cmd,cls,d:,dir,cd develop,cd develop\jdk12\bin,cd/,exit
可直接用图形界面打开bin,然后搜索框输入cmd
或在Notepad++中,右键标题,打开所在文件夹(命令行)
设置,首选项,新建,默认语言选java,编码选ANSI
4.IDEA下载安装
(1)安装:只勾选第一个:创建桌面快捷图标64
设置层级展开项目:齿轮,取消第二个
设置字体:file,settings,搜索font,size改成16
(2)IDEA项目结构介绍
project (项目、工程)
module(模块)
package (包)
class(类)
(3)创建项目:
Empty Project-Modules-SDK选择jdk的安装目录
在src下new个package,倒着写域名:com.xingyi.demo1
new个javaClass
运行:main方法左侧Run,或空白处右键
(4)快捷键:
psvm+回车:快速生成main方法
sout+回车:快速生或输出语句
alt + 1 :打开\隐藏工程目录结构
alt +4:打开\隐藏控制台
Ctrl + alt + L 格式化代码
Alt + enter 代码修正提示
Ctrl +D 向下复制一行
Ctrl + X 剪切当前行
Ctrl + / 批量加入单行注释,再按一次就是取消
Ctrl + shift +/ 批量加入多行注释,再按一次就是取消
ALt + shift + ↑ 上移当前行
Alt + shift + ↓ 下移当前行
2.java背景
1.java语言的三个版本
Java SE:Java语言的(标准版),用于桌面应用开发,是其他两个版本的基础。
Java ME:Java语言的(小型版),用于嵌入式消费类电子设备(被安卓和ios取代了)
Java EE:Java语言的(企业版),用于Web方向的网站开发。
2.Java跨平台原理
Java程序并非是直接运行的,而是由编译器将源程序编译成与平台无关的字节码文件(class文件),然后由Java虚拟机(JVM)对字节码文件解释执行。所以在不同的操作系统下只需安装不同的Java虚拟机即可实现java程序的跨平台。
3.JRE和JDK
Java程序开发的三个步骤:编写代码,编译代码,运行代码
编写代码:.java文件属于【源文件】,是无法被JVM所识别执行的
编译代码:产生可被虚拟机识别的.class文件(字节码文件)
运行代码:使用运行工具将class运行在JVM虚拟机中(多个class文件具体运行哪个)
编写代码的过程中,需要使用JRE中 Java已经写好的代码。
编译代码的过程中,需要使用JDK中的翻译工具。
运行代码的过程中,需要使用JDK中的运行工具。
代码最终运行在JVM当中。
JVM(Java Virtual Machine),Java虚拟机
JRE(Java Runtime Environment),Java运行环境,包含了JVM和Java的核心类库(Java API)
JDK(Java Development Kit)称为Java开发工具包,包含了JRE和开发工具
3.规则
3.1 标识符和关键字
1.注释
单行注释:格式://注释信息
多行注释:格式︰/*注释信息*/
文档注释:格式:/**注释信息*/,文档注释目前用不上,暂不讲解。
2.关键字
关键字∶被Java赋予了特定涵义的英文单词
特点:字母全部小写。
在编辑器针有特殊的颜色标记
48个关键字:
abstract、assert、boolean、break、byte、case、catch、char.class、continue、default、do、double、else、enum、extends、final、finally、float、for、if、implements、import、int、
interface、instanceof、long、native、new、package、private、protected、public、return、short、static、strictfp、super.switch、synchronized、this、throw、throws、transient、try、void、volatile、while.
3.标识符:
用来标识类名接口名、变量名方法名、文件名、类型名、数组名的有效字符序列。简单地说,标识符就是一个名字。
规则:
①可以由字母,数字,下划线(_),美元符($)组成,
但不能以数字开头,不能包含空格,%,@等其他特殊字符。
②要区分大小写且不能是java关键字
包名:全部小写
类、接口名:所有单词首字母均大写
变量名,方法名:
①单个单词:全部小写
②多个单词,第一个单词首字母小写,其后的单词首字母大写
4.运算符
算术运算符: +-*/ %++ --
关系运算符:>>=<=<!=
逻辑运算符:&& ll !
位运算符:& │ ^~
赋值运算符:=
5.编程语言的几个发展阶段
◆面向机器语言
◆面向过程语言
◆面向对象语言
面向对象编程主要体现下列三个特性:
◇封装性
◇继承
◇多态
3.2 数据类型划分
1.八个基本数据类型和四个引用数据类型
基本数据类型:整数类型,浮点类型,字符类型,布尔类型
引用数据类型:类,接口,数组,枚举类型
2.整数类型有三种表示形式
十进制整数,八进制整数(0开头),十六进制整数(以0x开头)
若要表示长整型在数字后面加L。(88L)
3.浮点类型有两种表示形式
十进制数形式(0.123)和科学计数法形式(123e3)
float型小数后面加F,double型小数后面加D,带小数点的数默认是Double型。
4.布尔类型
只有两个值true和false,在内存中占4个字节
5.类型转换
(1)自动类型转换
基本类型优先关系从低到高:byte->short->char->int->long>float->double
int i; double j=i;(机器自动转化)
(2)强制类型转换
int i=12;byte b=(byte)i; //int类型强制转换成byte
(3)其他类型转换
字符串转数字:Integer.parseInt(String s)//转为整型数字
数字转字符串:String.valueOf(各种类型的数值变量).
Byte.toString(byte b)
空串连接数字:“”+25
数据类型.png
3.3 数组
1.一维数组
(1)声明数组 int intArray[];
(2)引用数组
intArray[索引]
intArray.length
(3)初始化数组
直接赋值创建:String stringArray[]= {"abc", "How"};
用new创建:String s[]=new String[2];
s[0]=new String("Good");
2.多维数组
(1)声明数组 int intArray[][];
(2)引用数组
intArray[索引][索引]
(3)初始化数组
直接赋值创建:int a[][]={{1,2},{2,3},{3,4,5}};
java中把二维数组看作数组的数组,数组空间不是连续分配的,所以不要求二维数组每一维的大小相同。
用new创建:int a[][]=new int[2][3];//直接为每一维分配空间
String s[][]=new String[2][];开辟两行存储空间
s[0]= new String[2];/为第一维第一个单元分配空间
s[0][0]=new String("Good");
s[0][1]=new String("Luck");
3.4 枚举类型
语法格式如下:
enum 枚举名
{常量列表
}
案例:
enum season {
春季,夏季,秋季,冬季
}
public class Example2-8{
public static void main (string args [ ]){
season x=season.春季;
system.out.println(x);
}
3.5 程序控制语句
1.switch语句(判断季节)
switch (y){
case 3:
case 4:
case 5:
System.out.println("春天(spring) ");
break;
case 6:
case 7:
case 8:
System.out.println("夏天(summer) " );
break;
case 9:
case 10:
case 11:
System.out.println("秋天(autumn)");
break;
case 12:
case 1:
case 2:
System.out.println("冬天( winter) ");
break;
default:
System.out.println("季节输入有误");
}
2.包语句
通过package关键字声明包语句,是Java源文件的第一条语句,为该源文件中声明的类指定包名。
package语句的一般格式为: package 包名;
3.import语句
通过import关键字来引用不在同一个包中的类。
例如: import tom.jiafei.*;
3.6类
1.类
class 类名 //类声明
{ //类体
类体的内容
}
类的实现包括两部分:类声明和类体。
◆类体的内容包括两部分:一部分是变量的定义,用来刻画属性;另一部分是方法的定义,用来刻画功能。
2.变量分类
成员变量:在类中声明的变量,分为
静态变量:被static关键字修饰的变量。
实例变量:没有static关键字修饰的变量。
局部变量:在方法中声明的变量,只在方法内有效
3.成员变量的隐藏:
局部变量与成员变量的名字相同,则成员变量被隐藏,这个成员变量在这个方法内暂时失效
4.方法分类
静态方法:被static关键字修饰的方法。
实例方法:没有static关键字修饰的方法。
5.方法重载:同一个类中,方法名相同,方法参数不同即参数的个数或类型不同。(返回值类型要一致)
6.构造方法:方法名和所在的类的名字完全相同,并且没有返回值类型。(构造方法也可以重载)
3.7对象
1.声明对象point1和point2: Point point1,point2;
2.为对象分配内存,使用new运算符和类中的构造方法: point1=new Point(10,10);
3.调用对象的变量和方法:使用运算符"."
3.8 访问权限
权限.png使用关键字public,protect,friend,private来修饰成员变量或方法。
eg:
class Tom{
private float weight;
private float f(float a,float b){
return a+b;
}
class Jerry{
void g(){
Tom cat=new Tom ( );
cat.weight=23f; //非法, private类型的变量的访问权限在同一个类中
float sum=cat.f(2.3); //非法, private类型的方法的访问权限在同一个类中
}
private修饰的变量或方法,只有在同一个类中才可以调用
friend修饰的变量或方法,在同一个类或同一个包中才可以调用
protected修饰的变量或方法,在同一个类,同一个包或不同包的子类时都可以调用
public修饰的变量或方法,在同一个类,同一个包或不同包的子类,不同包的非子类时都可以调用
3.9 继承
1.继承与父类子类
1.继承
若父类和子类在同一个包中,子类可以继承父类中不是private的成员变量作为子类的成员变量。
若父类和子类不在同一个包中,子类可以继承父类中public,protect成员变量作为子类的成员变量。
2.子类对象的构造过程
子类创建对象时,父类和子类中声明的成员变量都被分配了内存,但只将子类继承的那部分分配给子类。
3.成员变量的隐藏
子类声明的成员变量和父类中的成员变量同名时,子类就隐藏了继承的成员变量。
4.方法重写
子类中的定义的方法,方法的类型,名字,参数个数与类型和父类完全相同,则子类对父类的方法实现重写。
5.super关键字
在子类中调用被子类隐藏的成员变量或方法要使用super关键字。
6.final关键字
被final修饰的类不能被继承。
被final修饰的方法不能被子类重写。
被final修饰的变量就是常量。
7.对象的上转型对象
①A类是B类的父类,用子类创建的对象赋值给父类的对象,此时父类对象是子类对象的向上转型。
B b=new B();
A a=b; //对象a是对象b的向上转型
②对象:不仅可以引用继承或隐藏的变量,继承或重写的方法,还可以引用新增的变量和新增的方法。
对象的向上转型对象:只能引用继承(没重写)或隐藏(重写后)的变量,继承和重写的方法。
③上转型对象强制转化成子类对象
B bb=(B)a;
image.png
2.继承与多态
多态:是指父类的某个方法被子类重写时,可以各自产生不同的功能.
image.png
3.抽象类和接口
一.抽象类
1. abstract类中可以有abstract方法也可以有非abstract方法,abstract类不能用new运算创建对象,将abstract类声明对象作为其子类的上转型对象,那么这个上转型对象就可以调用子类重写的方法。
注意:抽象类不能声明对象
2.子类必须重写父类的抽象方法
二.接口
1.抽象类
image.png
image.png
image.png
image.png
2.接口
1.
一个子类只能继承一个父类,同一个类可以实现多个接口
接口的实现包括两部分:接口声明和接口体,接口体中包含常量定义和方法定义两部分。
2.接口回调
实现某一接口的类创建的对象的引用赋给该接口声明的变量,此时接口变量可以调用被类重写的接口方法。
(A类是B类的父类,用子类创建的对象赋值给父类的对象,此时父类对象是子类对象的向上转型。)
3.接口和抽象类的比较:
接口中只有常量,而抽象类中可以有变量。接口中只有抽象方法,而抽象类中可以有普通方法。
1.实例
image.png
image.png
2.接口回调
image.png
image.png
3.实例
image.png
image.png
4.实操
4.1 从命令行输入输出数据
(1)用Scanner类创建一个对象
Scanner reader—new Scanner(System.in);
(2)输入:调用next方法
nextBoolean()、nextByte()、nextShort()、nextInt()、nextLong()、nextFloat()、nextDouble)。
double x=reader.nextDouble(;
(3)输出
System.out.println(x)
image.png
image.png