Java基础知识总结一

1何为编程?

编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。

为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路、方法、和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算机之间交流的过程就是编程。

 

2Java语言概述,历史、特点


SUN(Stanford University Network,斯坦福大学网络公司)1995年推出的一门高级语言。

是一种面向Internet的编程语言。
随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。
简单易学,完全面向对象,安全可靠,与平台无关的编程语言


java5.0之后的三大技术框架

J2EE(Java 2 Platform Enterprise Edition)企业版

jdk5.0版本后称为JAVAEE,是为开发企业环境下的应用程序提供的一套解决方案。该技术体系中包含的技术如Servlet Jsp等,主要针对于Web应用程序开发。是传智播客就业班和 Java训练营的主要学习内容之一.

J2SEJava 2 Platform Standard Edition)标准版

jdk5.0版本后称为JAVASE,这是在java基础阶段主要学习的内容,也是java的基础,以后不管从事Android开发或者是物联网+云计算的开发,等是建立在JSE基础上的,因此该技术是java的最核心技术,是传智播客基础班的主要上课内容.

J2ME(Java 2 Platform Micro Edition)小型版

jdk5.0版本以后称为JAVAME,该技术多应用于一些电子产品的嵌入式开发,以前在手机开发上应用的也比较多,但是随着智能手机的发展,现在手机应用程序(比如Android程序)的开发已经不再使用该技术

 

3、什么是跨平台性?原理是什么?JVM

    所谓跨平台性,是指java语言编写的程序,一次编译后,可以在多个系统平台上运行。

 

实现原理:Java程序是通过java虚拟机在系统平台上运行的,只要该系统可以安装相应的java虚拟机,该系统就可以运行java程序。(注意不是能在所有的平台上运行,关键是该平台是否能安装相应的虚拟机)

我的总结:Java程序之所以能够实现跨平台运行,是因为它根本就不直接运行在任何底层平台上,而是需要在哪里运行,就在哪里(Windows平台)事先准备好自己的Java平台,而这只是仅仅是安装和配置一个软件而已!

 

4JreJdk的区别? 

JRE:(Java Runtime Environment),java运行环境。包括Java虚拟机(JVM Java Virtual Machine)Java程序所需的核心类库等,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE 即可。

JDK:(Java Development Kit Java开发工具包JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。

其中的开发工具:编译工具(javac.exe) 打包工具(jar.exe)

 

简单而言:使用JDK开发完成的java程序,交给JRE去运行。

我的总结:必须熟练的记忆,核心类库,开发工具

 

5java虚拟机JVM

Java Virtual Machine ,简称JVM;

它是运行所有Java程序的抽象计算机,Java语言的运行环境,它是Java 最具吸引力的特性之一,JVM读取并处理编译过的与平台无关的字节码(class)文件。

Java编译器针对JVM产生class文件,因此是独立于平台的。

Java解释器负责将JVM的代码在特定的平台上运行。

Java虚拟机是不跨平台的.

 

6Java配置环境变量

java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。

环境变量的配置:

    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:\

6、Java程序运行机制

编译: javac  文件名.文件后缀名     运行: java  类名

我的总结:Java程序的组成:Java源文件,字节码文件。

 

7、学习java注意的地方

Java语言拼写上严格区分大小写,一个( .Java源文件)里可以定义多个Java类,但其中最多只能有一个类被定义成public类,若源文件中包括了public类,源文件必须和该public类同名,一个源文件中包含NJava类时,编译后会生成N份字节码文件,即每个类都会生成一份单独的class文件,且字节码文件名和其对应的类名相同;

 

我的总结:一个Java源文件只定义一个类,不同的类使用不同的源文件定义,将每个源文件中单独定义的类都定义成public保持Java源文件的主文件名与源文件中的类名一致;

 

 

8Java语法格式

任何一种语言都有自己的语法规则,Java也一样,既然是规则,那么知道其如何使用就可以了,代码都定义在类中,类由class来定义,区分 public class  和  class,代码严格区分大小写,main Main  是不一样的;

Java中的标识符与关键字;

注释;

 main方法的作用:程序的入口,保证程序的独立运行JVM调用

 

 

9.代码注释:单行//,多行/* */,文档注释/** */

 

1.单行注释      //:

 

//后到本行结束的所有字符会被编译器忽略;

 

2.多行注释     /* */:

 

/*  */之间的所有字符会被编译器忽略

 

3.文档注释     /** */:

 

 /**  */之间的所有字符会被编译器忽略,java特有的(用于生成API文档);

 

我的总结:多行和文档注释都不能嵌套使用

 

 

10Java中的标识符

 

可简单理解为在Java程序中为了增强阅读性自定义的名称。比如:类名,方法名,变量名等。

 

命名规则:

 

(1) 由字母、数字、下划线、$组成,不能以数字开头

 

注意:此处的字母还可以是中文,日文等;

 

(2) 大小写敏感

 

(3) 不得使用java中的关键字和保留字

 

(4) 别用Java API里面的类名作为自己的类名。

 

 

11java中的常量和变量

 

常量:是在程序中的不会变化的数据。

 

变量的概念:占据着内存中的某一个存储区域,该区域有自己的名称(变量名)和类型(数据类型),该区域的数据可以在同一类型范围内不断变化;

 

 

 

为什么要定义变量

 

用来不断的存放同一类型的常量,并可以重复使用;

 

变量空间的开辟需要什么要素呢?

 

1,这个空间要存储什么数据?数据类型。

 

2,这个空间叫什么名字啊?变量名称。

 

3,这个空间的第一次的数据是什么? 变量的初始化值。

 

 

 

变量的作用域和生存期:

 

变量的作用域:

 

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

 

生命周期:

 

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

 

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

 

定义变量的格式

 

数据类型    变量名  =  初始化值;

 

注:格式是固定的,记住格式,以不变应万变。

 

作用范围:定义开始到定义它的代码块结束;

 

作用域内,不允许多个个局部变量命名冲突(不可重名)

 

 

12.、Java成员变量和局部变量

 

局部变量:不是声明在类体括号里面的变量;

 

局部变量 使用前必须初始化值;

 

局部变量 没有默认初始化值;

 

局部变量的作用域是从定义开始’{‘到定义它的代码块’}’结束;

 

 

 

成员变量:在方法体外,类体内声明的变量,又称字段(Field)或全局变量;(其实Java中没有全局变量,由于Java面向对象语言,所有变量都是类成员)(通常是类中的属性字段),成员变量的作用域是整个类;

 

我的总结:注意成员变量和局部变量的区别

 

 例如:

package reviewDemo;

public class Demo2 {
 public static void main(String[] args) {
       int i;
       System.out.println(i);
   }
}

 

 

注:局部变量调用前没有初始化,所以编译的时候就会报错!

 

 

package reviewDemo;

public class Demo2 {
  static int i;
    public static void main(String[] args) {
     System.out.println(i);
   }
}

 

 

注:此时i成员变量,未初始化会被赋予默认的初始化值!程序正确!

 

 

我的总结:

 

局部变量是定义在方法中的变量,,,出了该方法就不能访问该变量了....
成员变量是在类中定义,,,,并且在类的成员方法中都能访问的变量..型。

数据类型有8种:整数类型:byte(字节型),short(短整形) ,int(整型),long(长整型)

               浮点型:float(单精度浮点型)  ,double(双精度浮点型)

               字符型:char(字符型)

               布尔型:boolean(布尔型)

 

 

基本数据类型转换之向上转型和向下转换

 

向上转换:

 

整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则:

 

容量小的类型可自动转换为容量大的数据类型:

 

byte,short,char int long float double

 

byteshortchar之间不会相互转换,他们在计算时首先会转换为int类型。

 

boolean 类型是不可以转换为其他基本数据类型。

 

Eg

 

  int i = 123;

 

  long l = i; //自动转换,不需强转

 

  float f = 3.14F;

 

  double d = f;

 

 

 

向下转换:

 

Eg

 

  long l = 123L;

 

  int i = (int) l;//必须强转

 

  double d = 3.14;

 

  float f = (float) d;

 

 

 

我的总结:类型转化

 

小转大,自动!自动类型转换(也叫隐式类型转换)  

 

大转小,强转!强制类型转换(也叫显式类型转换)

 

 

 

2.引用数据类型

 

引用数据类型: String、数组array、类class、接口 interface。

 

 

 

14、Java的运算符

 

运算符是一种特殊符号,用以表示数据的运算、赋值和比较等共分以下几种:

 

 

 

1)、算术运算符+ 、— 、* / %

 

    %:任何整数模2不是0就是1,所以只要改变被模数就可以实现开关运算。

 

+:连接符。

 

++,--

 

2)、赋值运算符(=  += -= *= /= %=)

 

3)、比较(条件)运算符>>=<<=!=

 

特点:该运算符的特点是:运算完的结果,要么是true,要么是false。

 

4)、逻辑运算符&&||、!&|^

 

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

 

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

 

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

 

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

 

 两边结果一样,就为false。

 

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

 

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

 

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

 

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

 

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

 

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

 

&|^~>><<<<<>>>(无符号右移)

 

 

 

我的总结:

 

逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6

 

&”和“&&”的区别:单与时,左边无论真假,右边都进行运算;双与时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。

 

|”和“||”的区别同理,双或时,左边为真,右边不参与运算。

 

^ ”与“|”不同之处是:当左右都为true时,"^"结果为false

 

 

 

15、表达式和三目运算符

 

是由数字、运算符、数字分组符号(括号)等以能求得数值的有意义排列的序列;

 

a + b

 

3.14 + a

 

(x + y) * z + 100

 

boolean b= i < 10 && (i%10 != 0)

 

表达式的类型和值

 

对表达式中操作数进行运算得到的结果是表达式的值。

 

表达式值的数据类型即为表达式的类型。

 

表达式的运算顺序

 

应按照运算符的优先级从高到低的顺序进行;

 

优先级相同的运算符按照事先约定的结合方向进行;

 

 

 

 

 

“三目运算符”,语法格式:x ? y : z;

 

其中xboolean类型表达式,先计算x的值,若为true,则整个三目运算符的结果是表达式y的值,否则就是z的值。

 

 

 

package reviewDemo;

 

public class Demo2 {

 

public static void main(String[] args) {

 

String  s = "lz";

 

s = (s == "lz" ? "正确" : "错误");

 

System.out.println(s);

 

}

 

}

 

输出:正确

 

 

 

17、程序流程控制语句

 

顺序结构

 

分支结构(条件结构)

 

循环结构

 

控制循环结构

 

 

 

顺序结构:

 

如果代码里没有流程控制,程序是至上而下一行一行执行的,一条语句执行完之后继续执行下一条语句,直到程序的最后。

 

 

 

if语句:

 

基本语法:if(表达式){方法体}else if(表达式){方法体}else(方法体)

 

几种形式:

 

三种格式:

 

if(条件表达式){执行语句;}

 

if(条件表达式){执行语句;}else{执行语句;}

 

if(条件表达式){执行语句;}else if (条件表达式){执行语句;}……else{执行语句;}

 

 

 

public class If3 {

 

  public static void main(String args[]){

 

    int i = 3;

 

    if (i > 5){

 

      System.out.println("变量i大于5");

 

     }else if (i > 4){

 

      System.out.println("变量i小于4");

 

    }else{

 

      System.out.println("其他");

 

      }

 

    }

 

  }

 

 

 

switch控制语句

 

格式:  

 

switch(表达式) //表达式 为char

 

{

 

  case 表达式可能的结果值1:

 

  执行语句;

 

  break

 

  case 表达式可能的结果值2:

 

  执行语句;

 

  break

 

    ...

 

  default:

 

  执行语句;

 

  break//最后这个一般不写

 

}

 

备注:

 

case之间与default没有顺序。先执行第一个case,都没有匹配的case值执行default

 

结束switch语句的两种情况:遇到breakswitch语句执行结束。

 

如果匹配的case或者default没有对应的break,那么程序会从第一次匹配的case语句开始继续向下执行,运行可以执行的语句,直到遇到break或者switch结束为止。

 

class switch2 {

 

  public static void main(String[] args)

 

  {

 

    int a = 7,b = 5;

 

    switch(a-b)

 

  {

 

  case 3://表达式可能的值;

  {

 

    System.out.println("33!");

 

  }

 

  break;

 

 

 

  case 4:

 

  {

 

    System.out.println("44!");

 

  }

 

  break;

 

  default://都没有执行则 执行该语句!

 

  System.out.println("其它的");

 

  }

 

 }

 

}

 

注意:switch语句只能使用bytecharshortint四种基本类型以及它们的包装类和枚举

 

18三大循环结构:

 

用于处理需要重复执行的操作;

 

根据判断条件的成立与否,决定程序段落的执行次数,而这个程序段落我们称为循环体;

 

while:事先不需要知道循环执行多少次;

 

do  while:同上,只是至少要执行一次(先做,后判断)

 

for:需要知道循环次数;

 

 

 

循环结构(while & do while)

 

while语句

 

格式:

 

while(条件表达式值为true)

 

{

 

  执行语句;

 

}

 

 

 

do while语句

 

格式:

 

do{

 

  执行语句;

 

}

 

while(条件表达式值为true);

 

 

 

我的总结:do while特点是无论条件是否满足,循环体至少被执行一次

 

循环里的条件表达式不能直接写false或直接写结果是false的表达式,不过可以使用变量来传递false;

 

 

 

循环结构(for)

 

格式:for(初始化表达式(1);循环条件表达式(2);循环后的操作表达式(3){

 

      执行语句;(4

 

    }

 

执行顺序:(1) (2) (4) (3) (2) (4) (3)

 

 

 

备注:

 

1, for里面的3个表达式运行的顺序,初始化表达式只读一次,判断循环条件,为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件,重复找个过程,直到条件不满足为止。

 

2, whilefor可以互换,区别在于for为了循环而定义的变量在for循环结束就在内存中释放。而while循环使用的变量在循环结束后还可以继续使用。

 

3, 最简单无限循环格式:while(true) , for(;;),无限循环存在的原因是并不知道循环多少次,而是根据某些条件,来控制循环。

 

 

 

Eg

 

用三种循环控制求出100以内前53的倍数的数字;

 

 

 

class while{

 

  public static void main(String[] args) {

 

    int i = 1,k = 0;

 

    while(i<=100){

 

    if(i%3==0){

 

    if(k<5)

 

      System.out.println(i);

 

      k++;

 

    }

 

      i++;

 

    }

 

  }

 

}

 

 

 

class dowhile{

 

  public static void main(String[] args) {

 

    int i = 1,k = 0;

 

  do{

 

  if(i%3==0){

 

    if(k<5)

 

      System.out.println(i);

 

      k++;

 

    }

 

  i++;

 

  }

 

  while(i<=100);

 

  }

 

}

 

 

 

class for{

 

  public static void main(String[] args) {

 

    int i = 1,k = 0;  

 

      for(;i<100;i++){

 

        if(i%3==0&&k<5){

 

          System.out.println(i);

 

          k++;

 

          }

 

      }

 

    }

 

  }

 

1)、当判断固定个数的值的时候,可以使用if,也可以使用switch。

 

2)、当判断数据范围,获取判断运算结果boolean类型时,需要使用if。

 

3)、当某些语句需要执行很多次时,就用循环结构。

 

 

 

break:作用于switch ,和循环语句,用于跳出,或者称为结束。

 

break语句单独存在时,下面不要定义其他语句,因为执行不到,编译会失败。当循环嵌套时,break只跳出当前所在循环。要跳出嵌套中的外部循环,只要给循环起名字即可,这个名字称之为标号

 

 

 

continue:只作用于循环结构,继续循环用的。

 

 

 

19、嵌套循环与流程控制

 

嵌套循环:循环里套循环

 

假设外循环的循环次数是m,内循环的循环次数是n次,那么内层循环的循环次数需要 m * n次。

 

 

 

Eg利用for循环语句的嵌套打印出乘法口诀表

 

 

 

class break1 {

 

  public static void main(String[] args) {

 

    for(int i=1;i<=10;i++){//定义ij的值必须在for循环里面,否则每次跳出循环重新执行就无法取值

 

    for(int j=1;j<=10;j++){

 

      if(j<=i)

 

        System.out.print(j+"*"+i+"="+i*j+" ");//小注意:print()括号里面

 

        必须传递参数,println()无限制!

 

        }

 

      System.out.println();

 

      }

 

    }

 

}

 

 

 

流程控制

 

 

 

break语句、 continue语句;

 

 

 

break:终止该层循环;

 

continue:跳过该层循环

 

注:

 

①:若这两个语句离开应用范围,存在是没有意义的。

 

②:这个两个语句后面都不能有语句,因为执行不到。

 

③:continue语句是跳过本次循环,继续下次循环。

 

④:标号的出现,可以让这两个语句作用于指定的循环。

 

 

 

Eg

 

package reviewDemo;

 

 

 

public class Demo2 {

 

  public static void main(String[] args) {

 

    int i = 1;

 

    for (; i < 10; i++) {

 

      System.out.println(i);

 

      if(i == 8){

 

        break;//流程控制,不会完全执行!

 

        }

 

      }

 

    }

 

  }

 

posted @ 2017-08-03 21:03  重构程序之路  阅读(308)  评论(0编辑  收藏  举报