目录
- 一些概念
- JavaSE,EE,ME的区别
- 具体区别
- 与过往学习的简单类比
- JRE
- JDK
- 编程实操:从C面向过程转变
- 变量定义与输出
- 数组的定义与遍历
- 函数的调用:类比c语言结构体的使用
- 输入数据:Scanner
师承陈立臣
一些概念
JavaSE,EE,ME的区别
具体区别
Java SE(Java Standard Edition)
SE(标准版)主要用于桌面程序,控制台开发(JFC)
Java EE(Java Enterprise Edition)
EE(企业版)企业级开发(JSP,EJB):网站开发和基于 b/s模式的编程
Java ME(Java Mobile Edition)
ME(微缩版)嵌入式开发(手机,小家电):手机软件游戏编程
与过往学习的简单类比
SE 就像第一阶段,C语言,是基础。
EE 就像第二阶段,FTP云盘项目,主要是Web服务
ME 就像第三阶段,ARM设备的开发。主要是电子产品,嵌入式设备
JRE
Java运行环境(Java Runtime Environment,简称JRE)是一个软件,JRE可以让计算机系统运行Java应用程序(Java Application)。JRE的内部有一个Java虚拟机(Java Virtual Machine,JVM)以及一些标准的类别函数库(Class Library)。
java之所以跨平台就是因为有JRE,只要有JRE就能运行java。
JDK
JDK全(Java Development ToolKit),是Java语言开发工具包。JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。
没有JDK的话,无法编译Java程序(指java源码.java文件),如果想只运行Java程序(指class或jar或其它归档文件),要确保已安装相应的JRE。
从这些最简单的东西开始了解java吧。直接记下老师上课讲的例子就够了,都很简单。
编程实操:从C面向过程转变
变量定义与输出
public class Test {
public static void main(String[] args) {
System.out.println("hello world");//ln是带有回车符号的print
int a; //变量也是这么定义的
a = 10;
int b;
b = 20;
System.out.println("a="+a);//sout是这个输出函数的简写,打完回车即可
System.out.println("b="+b);
int c = a + b;
System.out.println("c="+c);
System.out.println("a="+a + " b="+b + " c="+c);//想要连起来输出这个加号就是必须的
//C 语言中:printf("%d + %d = %d",a,b,c);
System.out.println(a +"+"+ b +"="+ c);//+相当与一个连续符
//alt shift f10 是选择文件运行,ctrl+alt+f10是快速运行当前选择的文件
float f = (float) 0.1; //在这个环境中小数一概认定为double类型,不给你float赋值
double d = 0.2;
System.out.println("f="+f);
System.out.println("d="+d);
}
}
数组的定义与遍历
public class array {
public static void main(String[] args) {
//定义的时候初始化
//int[] score = {1,2,3};//在定义的时候不允许写大小
//开辟空间,等待输入
int[] num = new int[3]; //不要int num[],规范起来
//也可以分开(在IDEA中死活不给你这样干)(傻吊,刚才放到main外面去了怪不得)
//int []a = null;//java中的null是小写
//a = new int[3];
int i; //数组的遍历也是使用下标
for (i=0;i<num.length;i++){ //不用再sizeof(num)/sizeof(num[0]),这就是面向对象的魅力
num[i] = i;
}
for(i=0;i<num.length;i++){
System.out.println(num[i]);
}
}
}
函数的调用:类比c语言结构体的使用
//对比C语言的结构体
/*
struct Test{
int a;
char name[128];
void (*pFunc)();
};
void myPrint()
{
printf("陈立臣没我帅\n");
}
int main()
{
struct Test stu1 = {
.a = 10,
.name = "华天朱",
.pFunc = myPrint,//对函数指针的赋值只需要函数名即可,函数名就是地址
};
stu1.pFunc();//参数只在调用的时候传入
}
*/
public class func { //整个类像一个结构体
int score;
int age;
int num = 10;
static void myPrint()//允许你封装方法,但是调用的话要加static
{ //否则IDEA也不给你补全,输入函数名的过程还一直报错
System.out.println("陈立臣没我帅");
}
static void putAIn(int a){
System.out.println("a的值是"+a);
}
void addB(int b){ //那怎样才能不写static就调用呢?看下面
b = b + 1;
System.out.println("b++的值是"+b);
}
public static void main(String[] args) {
myPrint();
putAIn(100);
func t = new func();//不用static,通过变量来调,类似于C语言,
//要使用结构体里的函数指针,就要有一个实际的对象
t.addB(5); //调用
}
}
输入数据:Scanner
import java.util.Scanner; //自己跳出来的包(在输入了scanner后)
public class input {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //这是个类,可以理解为C里面的结构体,类里面有实现的函数供你调用
//结构体肯定要定义出一个变量来,要开辟空间,从系统的输入来进行浏览
//scanner不认识(嘿嘿,我的IDEA输入完成后自动导入了包),
//如果没导入,通过ctrl+shift+o来入包(包是放在系统中)
int a;
String str; //对于java没有char* 这种。char str[128];
float f;
double d;
System.out.println("请输入一个整型数");
a = sc.nextInt();
System.out.println("请输入字符串");
sc.nextLine(); //要把上面的回车吸收了,否则str=回车,直接跳到输入浮点数
str = sc.nextLine();
System.out.println("请输入一个浮点数");
//sc.nextLine();那为什么这里不用吸收回车呢?
f = sc.nextFloat();
System.out.println("请再输入一个小数");
d = sc.nextDouble(); //这里也不用吸收来自上面的回车,难道只需要吸收第一个回车?
System.out.println(" "+a + " "+str + " "+f + " "+d);
}
}