zoukankan      html  css  js  c++  java
  • JAVA 从入门到放弃

    学开发主要搞懂三个问题,是什么,为什么学,能做什么
            什么是计算机程序:计算机按照某种顺序而完成的一系列有序指令的集合。
        什么是开发语言:人类与计算机沟通的语言
          什么是java:一门优秀的开发语言,  
          为什么学java:这就问你自己了,可能吃饱了撑的。不想早死就别学。
      /** 计算机如何解决问题
     * 例如:给我一杯水 转身到厨房 找到一个杯子 找到水壶 在杯子中倒入一些水 拿着杯子走回桌子
     * 程序是用特殊的编程语言写出来表达如何解决我问题的
     * 程序=算法+数据结构
     * 算法:1.我们要让计算机做计算,就需要像这样找出计算步骤,如何用编程语言写出来
     * 2.计算机做的所有事情都叫算法
     * 3.计算机的步骤就是算法
     * 计算机的思维
     * 2x+6=20
     * 解方程
     * 枚举
     * 二分搜索
     * 枚举求最大公约数
     * 程序的执行步骤:解释 翻译 执行
     */
        java的作用:什么桌面程序,web程序,安卓程序等等都可以做
        Java技术平台:
               1.java SE是java的核心,能完成桌面应用程序的开发,是其它两者的基础;
                  2.java EE主要用于网络程序和企业应用开发。
                  3.java ME这个基本上没人用可以忽略
        java语言的特点:
             简单,跨平台,面向对象,可移植性,分布式,解释通用性,稳健,安全,多线程和同步机制。
             开发java程序,先下个jdk,再下一个ide(理解成开发工具就行),或者可以直接下个MyEclipse,安装都是傻瓜式操作。 
            jdk和jre的解释:

            1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre。

            2,JRE:Java Runtime Environment,java程序的运行环境,java运行的所需的类库+JVM(java虚拟机)。

            3,配置环境变量:让java jdkin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。

            环境变量的配置:

            1.安装完成后,右击"我的电脑",点击"属性",选择"高级系统设置"

            2.选择"高级"选项卡,点击"环境变量";

            1):永久配置方式:JAVA_HOME=%安装路径%Javajdk  path=%JAVA_HOME%in

            2):临时配置方式:set path=%path%;C:Program FilesJavajdkin

    特点:系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置的路径下找。

        classpath的配置:

            1):永久配置方式:classpath=.;c:;e:

            2):临时配置方式:set classpath=.;c:;e:

               java的运行机制:

            举个栗子:
    package com.alphabet.entry;
    public class HelloWorld {
        public static void main(String[] args) {
            System.out.println("helloworld");
        }
    }
        编译之后, 我们得到了HelloWorld.class,
            在HelloWorld里面, 我们调用了 JAVA API中的 java.lang.System这个类的静态成员对象 out, out 的静态方法: public static void println(String string); 
            然后我们让虚拟机器来执行这个HelloWorld。
            1. jvm会在classpath中找到HelloWorld.class。
            2. jvm中的解释器(interpret)会把HelloWorld.class解释成字节码。
            3. 把解释后的字节码交由execution engin执行。
            4. execution engin会调用native method(即平台相关的字节码)来在host system的stdout(显示器)的指定部分打印出指定的字符串。
            5. 这样, 我们就看到"helloworld"字样了。

        javac命令和java命令做什么事情呢?

            要知道java是分两部分的:一个是编译,一个是运行。

            javac:负责的是编译的部分,当执行javac时,会启动java的编译器程序。对指定扩展名的.java文件进行编译。 生成了jvm可以识别的字节码文件。也就是class文件,也就是java的运行程序。

        java:负责运行的部分.会启动jvm.加载运行时所需的类库,并对class文件进行执行.

        一个文件要被执行,必须要有一个执行的起始点,这个起始点就是main函数.

        java的基础语法:
                1.Unicode字符集:java语言使用的Unicode标准字符集。在Unicode字符集中,前128个字符刚好是ASCII码,但大部分国家的“字母表”中的字母都是Unicode字符集中的字母,因此java所使用的字母不仅包括通常的拉丁字母,还包括汉子、希腊字母等等。
            java关键字
        标识符:

         1),数字不可以开头。

         2),不可以使用关键字。

        变量的作用域和生存期:

         变量的作用域:

            作用域从变量定义的位置开始,到该变量所在的那对大括号结束;

        生命周期:

            变量从定义的位置开始就在内存中活了;

            变量到达它所在的作用域的时候就在内存中消失了;

        数据类型:java数据类型是一切编程的基础。
            java绝大部分的操作是基于内存的,如果没有内存一切都无法说起,而数据类型就是跟内存息息相关的事物,他会让我们合理的使用内存。只有基础越牢固,才能越往上。

            变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。

            内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。

           常用数据类型:byte、short、int、long、float、double、char、boolean

    简单类型

    boolean 

    byte 

    char 

    short 

    int

    long

    float 

    double 

    void 

    二进制位数

    16 

    16 

    32 

    64 

    32 

    64 

    -- 

    封装器类

    Boolean 

    Byte 

    Character 

    Short 

    Integer 

    Long 

    Float 

    Double 

    Void 

    package com.alphabet.entry;
    import java.lang.annotation.Native;

    public class DataType {
        /**
         *     byte 数据类型是8位、有符号的,以二进制补码表示的整数;
         *     源码: public static final byte   MIN_VALUE = -128;
         *    最小值是 -128(-2^7);
         *    源码:public static final byte   MAX_VALUE = 127;
         *    最大值是 127(2^7-1);
         *    默认值是 0;
         *    byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;
         *    by1是基本数据类型,by2是封装类
         */
        public static void byteType() {
            // TODO Auto-generated method stub
            byte by1=6;
            System.out.println(by1);
            Byte by2=8;
            String test=by2.toString();
            System.out.println(test);
            System.out.println(test.getClass());
        }
        /**
         * short 数据类型是 16 位、有符号的以二进制补码表示的整数
         * 最小值是 -32768(-2^15);
         * 最大值是 32767(2^15 - 1);
         * Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;
         * 默认值是 0;
         * 
         */
        public static void shortType() {
            // TODO Auto-generated method stub
            short sh=8;
            System.out.println(sh);
            Short sh2=8;
            System.out.println(sh2);
        }
        /**
         * int 数据类型是32位、有符号的以二进制补码表示的整数;
         * 最小值是 -2,147,483,648(-2^31);
         * 最大值是 2,147,483,647(2^31 - 1);
         * 一般地整型变量默认为 int 类型
         * 默认是0
         * 也是最常用的类型
         *  @Native public static final int   MIN_VALUE = 0x80000000;
         *  @Native public static final int   MAX_VALUE = 0x7fffffff;
         *  
         */
        public static void intType() {
            // TODO Auto-generated method stub
            int int1=6;
            Integer int2=8;
            int int3=int2.intValue();
            System.out.println(int1);
            System.out.println(int2);
            System.out.println(int3);
            System.out.println(int2.MAX_VALUE);
            System.out.println(int2.MIN_VALUE);
        }
        /**
         * long:长整型
         * long 数据类型是 64 位、有符号的以二进制补码表示的整数;
         * 最小值是 -9,223,372,036,854,775,808(-2^63);
         * 最大值是 9,223,372,036,854,775,807(2^63 -1);
         * 这种类型主要使用在需要比较大整数的系统上;
         *
         */
        public static void longType() {
            // TODO Auto-generated method stub
            long long1=6;
            Long long2=8L;
            long long3=long2.SIZE;
            System.out.println(long1);
            System.out.println(long2);
            System.out.println(long3);
            System.out.println(long2.MAX_VALUE);
            System.out.println(long2.MIN_VALUE);
            System.out.println(long2.max(100, 999999999));
        }
        /**
         * float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;
         * float 在储存大型浮点数组的时候可节省内存空间;
         * 默认值是 0.0f;
         * 浮点数不能用来表示精确的值,如货币;
         * 
         */
        public static void floatType() {
            // TODO Auto-generated method stub
            float f1=6;
            Float f2=8f;
            float f3=f2.SIZE;
            System.out.println(f1);
            System.out.println(f2);
            System.out.println(f3);
            System.out.println(f2.MAX_VALUE);
            System.out.println(f2.MIN_VALUE);
        }
        /**
         * char类型是一个单一的 16 位 Unicode 字符;
         * 最小值是 u0000(即为0);
         * 最大值是 uffff(即为65,535);
         * char 数据类型可以储存任何字符;
         * char可以输入任何东西,但是只唯一
         */
        public static void charType() {
            char c1='f';
            System.out.println(c1);
            Character c2='f';
            System.out.println(c2);
            /**
             * 为什么char和character不能来草字符串呢
             * 首先String不属于8种基本数据类型,String是一个引用类型的对象.他是专门用来处理字符串的
             * 因为char采用的是Unicode编码,所以基本上可以容纳所有的字符.
             * 而String是用来操作字符串的,String其实也就是一个char类型的数组
             */
            char[] c= {'1','2','a','b','c','d','e'};
            String d="12abcde";
            if (c.equals(d)) {
                System.out.println("一样的");
            }
        }
        /**
         * double 数据类型是双精度、64 位、符合IEEE 754标准的浮点数;
         * 浮点数的默认类型为double类型;
         * double类型同样不能表示精确的值
           * //浮点计算是有误差的 例如
           * System.out.println(1.2-1.1);
         * double和float表示精确的数有问题
         */
        public void doubleType() {
            // TODO Auto-generated method stub
            double d1=6;
            Double d2=8d;
            double d3=d2.SIZE;
            System.out.println(d1);
            System.out.println(d2);
            System.out.println(d3);
            System.out.println(d2.MAX_VALUE);
            System.out.println(d2.MIN_VALUE);
        }
        /**
         * boolean数据类型表示一位的信息;
         * 只有两个取值:true 和 false;
         * 这种类型只作为一种标志来记录 true/false 情况;
         * 默认值是 false;
         * 
         */
        public static void booleanType() {
            // TODO Auto-generated method stub
            boolean b1=true;
            Boolean b2=false;
            boolean b3=b2.booleanValue();
            System.out.println(b1);
            System.out.println(b2);
            System.out.println(b3);
            System.out.println(b2.hashCode());
            System.out.println(b2.getClass());
        }
        public static void main(String[] args) {
            System.out.println("Hello");
        }
    }
    1. 运算符号:

        4)、逻辑运算符。

            & | ^ ! && ||

            逻辑运算符除了 ! 外都是用于连接两个boolean类型表达式。

            &: 只有两边都为true结果是true。否则就是false。

            |:只要两边都为false结果是false,否则就是true

            ^:异或:和或有点不一样。

                 两边结果一样,就为false。

                 两边结果不一样,就为true.

            & 和 &&区别: & :无论左边结果是什么,右边都参与运算。

                         &&:短路与,如果左边为false,那么右边不参数与运算。

            | 和|| 区别:|:两边都运算。

                        ||:短路或,如果左边为true,那么右边不参与运算。

        5)、位运算符:用于操作二进制位的运算符。

            & | ^

            << >> >>>(无符号右移)

      练习:对两个变量的数据进行互换。不需要第三方变量。

                int a = 3,b = 5;-->b = 3,a = 5;

            方法一:

                a = a + b; a = 8;

                b = a - b; b = 3;

                a = a - b; a = 5;

            方法二:

                a = a ^ b;//

                b = a ^ b;//b = a ^ b ^ b = a

                a = a ^ b;//a = a ^ b ^ a = b;

            练习:高效的算出 2*8 = 2<<3;

        数据类型转换

              自动类型转换

              数据类型要兼容

              目标类型大于类型

              强制类型转换

              目标类型小于源类型

    运算符的优先级:

    最高的优先级:()

    最低的优先级:赋值运算符(=)

    优先级顺序:算数运算符>关系运算符>逻辑运算符

    Scanner sc=new Scanner(System.in);//在Consolo控制输出

    // Scanner out=new Scanner((Readable) System.out);

    条件语句:if(条件){语句序列} 如果什么什么就什么什么

    switch (key) {
            case value:
                
                break;

            default:
                break;
            }     
  • 相关阅读:
    keil编译器从ac5迁移到ac6
    分享一个简单易用的软件定时器模块(MultiTimer)——基于keil+stm32f103zet+hal库(裸机实现)
    PID动图——很形象
    jlink之j-scope使用
    Keil的RTX特性
    Keil5创建基于RTX的STM32工程(转载+自己的体会)
    CMSIS-RTOS 简介
    Chapter 3 Phenomenon——13
    Chapter 3 Phenomenon——12
    Chapter 3 Phenomenon——11
  • 原文地址:https://www.cnblogs.com/lw687a/p/9508747.html
Copyright © 2011-2022 走看看