学开发主要搞懂三个问题,是什么,为什么学,能做什么

        什么是计算机程序:计算机按照某种顺序而完成的一系列有序指令的集合。

    什么是开发语言:人类与计算机沟通的语言

 什么是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 jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。

        环境变量的配置:

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

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

        1):永久配置方式:JAVA_HOME=%安装路径%\Java\jdk  path=%JAVA_HOME%\bin

        2):临时配置方式:set path=%path%;C:\Program Files\Java\jdk\bin

特点:系统默认先去当前路径下找要执行的程序,如果没有,再去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关键字



abstract

assert

boolean

break

byte

case

catch

char

class

const

continue

default

do

double

else

enum

extends

final

finally

float

for

goto

if

implements

import

instanceof

int

interface

long

native

new

package

private

protected

public

return

strictfp

short

static

super

switch

synchronized

this

throw

throws

transient

try

void

volatile

while

true

false

null

 



     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; 
   
 
           }