目录
Java概念
JavaSE、JavaEE、JavaME
- Java SE 是Java平台标准版的简称(Java Platform, Standard Edition) (also known as Java 2 Platform) ,用于开发和部署桌面、服务器以及嵌入设备和实时环境中的Java应用程序。Java SE包括用于开发Java Web服务的类库,同时,Java SE为Java EE和Java ME提供了基础。Java SE(Java Platform, Standard Edition,Java标准版)就是基于JDK和JRE,包含支持 Java Web 服务开发的类,并为 Java 企业级开发提供基础。
- Java EE 是一种利用Java2平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。J2EE技术的基础就是核心Java平台或Java2平台的标准版,Java EE不仅巩固了标准版中的许多优点,例如“编写一次、随处运行”的特性、方便存取数据库的JDBC API、CORBA技术以及能够在Internet应用中保护数据的安全模式等等,同时还提供了对 EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技术的全面支持。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构。
- Java ME 是Java微版的简称(Java Platform,Micro Edition),是一个技术和规范的集合,它为移动设备(包括消费类产品、嵌入式设备、高级移动设备等)提供了基于Java环境的开发与应用平台。Java ME分为两类配置,一类是面向小型移动设备的CLDC(Connected Limited Device Profile),一类是面向功能更强大的移动设备如智能手机和机顶盒,称为CDC(Connected Device Profile CDC)。
JRE、JDK
- Java运行环境(Java Runtime Environment,简称JRE)是一个软件,由太阳微系统所研发,JRE可以让计算机系统运行Java应用程序(Java Application)。JRE的内部有一个Java虚拟机(Java Virtual Machine,JVM)以及一些标准的类别函数库(Class Library)。
- JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。
Java基础
输出haozige
新建一个Java project文件,在这个文件里面建一个class文件
在text中输入下列代码,输出haozige
Java基本数据类型
Java的输入和输出
import java.util.Scanner;
public class Text {
public static void main(String[] args) {
//Java的四种输出方式
System.out.print("name" + " haozige\n"); //不带换行符
System.out.println("age: " + 21); //自带换行符
System.out.printf("%s\n","name:jiangxiaoya"); //等同于C语言的printf()
System.out.format("%s%d\n","age: ",20); //等同于C语言的printf()
//Java的输入方式,使用Scanner类,要使用ctrl + shift + o 导包
Scanner sc = new Scanner(System.in);
//next()方法,获取用户输入的字符串,不包括空格符和tap字符
//nextLine()方法,获取用户输入的字符串,包括空格符和tap字符
//nextInt()方法,获取用户输入的整数
/*
获取其他数据类型的方法
nextByte()方法
nextShort()方法
nextLong()方法
nextFloat()方法
nextDouble()方法
nextBoolean()方法
*/
sc.close(); //使用完要执行Scanner类的close方法,防止内存泄漏
}
}
Java选择控制流程
import java.io.IOException;
import java.util.Scanner;
public class Text {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入数据:");
int a = sc.nextInt();
if(a > 0){
System.out.println("a 为正整数");
}else if(a == 0){
System.out.println("a 为 0");
}else{
System.out.println("a 为负整数");
}
switch(a){
case 1:
System.out.println("a = 1");
break;
case 2:
System.out.println("a = 2");
break;
case 3:
System.out.println("a = 3");
break;
default:
System.out.println("done");
}
}
}
Java循环控制流程
import java.util.Scanner;
public class Text {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入数据:");
int a = sc.nextInt();
int i;
for(i=0;i<4;i++){
System.out.println("for_a = "+a);
}
while(a < 6){
System.out.println("while_a = "+a);
a++;
}
sc.close();
}
}
Java的JVM内存分布
- Java的程序运行在虚拟机上。
- Java虚拟机栈一般存放局部变量表、操作数栈、动态链接方法、返回地址。
- Java堆中一般存放new创建的产物,即new的对象或者new的数组
Java数组
public class Text {
public static void main(String[] args) {
int i, j;
// 声明数组
int[] array1;
// 声明数组并初始化
int[] array2 = { 1, 2, 3 }; // 简便写法,在编译时扔被还原成方式2
int[] array3 = new int[] { 4, 5, 6 };
int[] array4 = new int[3]; // 不赋值时,数组的元素自动赋值为0
// 对声明的数组重新进行赋值
// array4 = {0,1,2,3,4,5}; 错误方式
array1 = new int[10]; // 赋值为0
array4 = new int[] { 0, 1, 2, 3, 4, 5 };
// 数组的遍历
for (i = 0; i < array2.length; i++) {
System.out.println("array1[" + i + "] = " + array1[i]);
}
// 使用加强型for循环,该循环会自动将数组的元素依次读到定义的变量中
// for(数组数据类型 变量名称 : [数组名或集合名])
for (int tmp : array3) {
System.out.println(tmp);
}
// 声明二维或多维数组
int[][] array5;
// 声明二维或多维数组并初始化
int[][] array6 = { { 0, 1, 2 }, { 3, 4, 5 }, { 6, 7, 8 } };
int[][] array7 = new int[][] { { 0, 1, 2 }, { 3, 4, 5 }, { 6, 7, 8 } };
int[][] array8 = new int[3][3]; // 不赋值时,数组的元素自动赋值为0
// 遍历二维数组
for (i = 0; i < array6.length; i++) {
for (j = 0; j < array6[i].length; j++) {
System.out.print(array6[i][j]);
}
System.out.println();
}
// 非对称数组,内存分配类似于多维数组
int[][] a = new int[3][];
a[0] = new int[] { 1 };
a[1] = new int[] { 2, 3 };
a[2] = new int[] { 4, 5, 6 };
// 遍历不对称数组
for (i = 0; i < a.length; i++) {
for (j = 0; j < a[i].length; j++) {
System.out.print(a[i][j]);
}
System.out.println();
}
}
}
数组的内存分配
- 一维数组
- 多维数组
- 不对称数组
Java方法
public class Text {
//Java的方法不允许以单独的形式存在,必须包含在某个对象中,即一定要在类中定义方法
//方法的定义(相当于C语言的函数)
//[修饰符] [static] <返回值类型> <方法名>([参数列表]) [throws<异常名称>]
//[]:可选值
//<>:必选值
//静态方法,调用静态方法时,不需要再使用new来创建该类的对象就可以直接使用
public static void msgPrintf(String name){
System.out.println(name);
}
//同一个类中,允许同时存在方法名相同的方法,但要进行方法重载
/*
方法重载的条件:
1、在同一个类中;
2、方法名相同;
3、方法的形参列表必须不同(顺序不同、类型不同、个数不同之中任一不同即可);
*/
//方法重载后的方法名其实是不一样的,真正的方法名 = 方法路径全名 + 方法参数列表类型 + 返回值类型
//方法重载
public static void msgPrintf(char gender){
System.out.println(gender);
}
//非静态方法,调用非静态方法时,需要使用new来创建该类的对象,再使用该对象调用非静态方法
public void agePrintf(int age){
System.out.println(age);
}
public static void main(String[] args) {
//调用静态方法;[类名称].方法名()
Text.msgPrintf("haozige");
msgPrintf('男');
//调用非静态方法:
Text t = new Text();
t.agePrintf(21);
}
}
Java实现计算器
import java.util.Scanner;
public class Text {
public static double add(double a, double b) {
return a + b;
}
public static double minus(double a, double b) {
return a - b;
}
public static double multi(double a, double b) {
return a * b;
}
public static double div(double a, double b) {
return a / b;
}
public static void main(String[] args) {
while (true) { //C语言的while(1)循环
System.out.println("请输入w使用计算机或者q退出计算器");
Scanner sc = new Scanner(System.in);
String use = sc.nextLine();
if (use.equals("q")) {
System.out.println("已退出计算器");
break;
} else if(use.equals("w")){
System.out.println("开始使用计算器");
String str;
System.out.println("请输入第一个数");
double Num1 = sc.nextDouble();
str = sc.nextLine(); //吸收回车w
System.out.println("请输入第二个数");
String operator = sc.nextLine();
System.out.println("请输入第三个数");
double Num2 = sc.nextDouble();
str = sc.nextLine(); //吸收回车
if (operator.equals("+")) {
System.out.println(add(Num1, Num2));
continue;
}
if (operator.equals("-")) {
System.out.println(multi(Num1, Num2));
continue;
}
if (operator.equals("*")) {
System.out.println(multi(Num1, Num2));
continue;
}
if (operator.equals("/")) {
System.out.println(div(Num1, Num2));
continue;
}
}else{
continue;
}
sc.close();
}
}
}