目录

  • 一些概念
  • 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);
    }
}