Java基本语法


1.java语言发展史

·詹姆斯·高斯林

·SUN-(斯坦福大学网络公司)

·1995年5月23日,java语言诞生

·1996年1月 JDK1.0

·1997年2月 JDK2.0

·1998年12月 JDK1.2(将java分成J2SE,J2EE,J2ME)

·2000年5月 J2SE1.3

·2002年2月 J2SE1.4

·2004年10月 JDK1.5(改名JavaSE5.0,JavaEE,JavaME)

·2006年12月 JavaSE6.0

·2009年04月20日,甲骨文(oracle)74亿美元收购sun

·2011年7月 JavaSE7.0

·2014年3月JavaSE8.0


2.Java语言跨平台原理

·平台:指的是操作系统(windows,linux,mac)

·跨平台:Java程序可以在任意操作系统上运行,一次编写到处运行

·原理:实现跨平台需要依赖Java的虚拟机JVM(Java Virtual Machine)


3.JRE和JDK

JRE(Java Runtime Environment java运行环境)

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

JDK(Java Develpment Kit Java开发工具包)

JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括JRE。所以安装了JDK,就不用在单独安装JREl .其中的开发工具:编译工具(java.exe)运行工具(java.exe)等--->使用JDK开发完成的java程序,交给JRE去运行


4.HelloWorld案例

源文件(编写)---->编辑器---->字节码文件---->解释器------>结果

HelloWorld案例编写

·首先定义一个类

-public class 类名

·在类定义后加上一对大括号

-{}

·在大括号中间添加一个主方(main)法/函数

-public static void main(String [] args){}

·在主方法的大括号中间添加一行输出语句

-system.out.println("HelloWorld");

完整代码

public class HelloWorld{

    public static void main(String [] args){

        System.out.println("HelloWorld");

    }

}

(文件路径:../HelloWorld.java)

HelloWorld 案例编辑

cmd中

进入HelloWorld.java文件的目录

输入:

javac HelloWorld.java

进行编译

输入:

java HelloWorld

进行运行



5.注释

注释:用于解释说明程序的文字

分类:单行 、多行

作用:解释说明程序,提高程序的阅读性

//这是单行注释

/*

这是多行注释

*/

例子:

//这是一个Helloworld的类

public class HelloWorld{

     public static void main(String [] args){

         /*

                  这是多行注释

         */

         System.out.println("HelloWorld"); //在控制台输出Hellow

     }

}

运行结果


注释内的内容不显示

6.关键字

被java语言赋予了特定含义的单词

特点:

        A:组成关键字的字母全部小写

       B:常见的代码编辑器对关键字有特殊的颜色标记


关键字含义

abstract:表明类或者成员方法具有抽象属性

asser:t断言,用来进行程序调试

boolean:基本数据类型之一,声明布尔类型的关键字

break:提前跳出一个块

byte:基本数据类型之一,字节类型

case:用在switch语句之中,表示其中的一个分支

catch:用在异常处理中,用来捕捉异常

char:基本数据类型之一,字符类型

class:声明一个类

const:保留关键字,没有具体含义

continue:回到一个块的开始处

default:默认,例如,用在switch语句中,表明一个默认的分支。Java8 中也作用于声明接口函数的默认实现

do:用在do-while循环结构中

double:基本数据类型之一,双精度浮点数类型

else:用在条件语句中,表明当条件不成立时的分支

enum:枚举

extends:表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口

final:用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量

finally:用于处理异常情况,用来声明一个基本肯定会被执行到的语句块

float:基本数据类型之一,单精度浮点数类型

for:一种循环结构的引导词

goto:保留关键字,没有具体含义

if:条件语句的引导词

implements:表明一个类实现了给定的接口

import:表明要访问指定的类或包

instanceof:用来测试一个对象是否是指定类型的实例对象

int:基本数据类型之一,整数类型

interface:接口

long:基本数据类型之一,长整数类型

native:用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的

new:用来创建新实例对象

package:包

private:一种访问控制方式:私用模式

protected:一种访问控制方式:保护模式

public:一种访问控制方式:共用模式

return:从成员方法中返回数据

short:基本数据类型之一,短整数类型

static:表明具有静态属性

strictfp:用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范

super:表明当前对象的父类型的引用或者父类型的构造方法

switch:分支语句结构的引导词

synchronized:表明一段代码需要同步执行

this:指向当前实例对象的引用

throw:抛出一个异常

throws:声明在当前定义的成员方法中所有需要抛出的异常

transient:声明不用序列化的成员域

try:尝试一个可能抛出异常的程序块

void:声明当前成员方法没有返回值

volatile:表明两个或者多个变量必须同步地发生变化

while:用在循环结构中

7.常量

在程序的执行过程中,其值不可以发生改变的量

常量分类:

A:字符串常量     "HelloWorld"

B:整数常量         12,-23

C:小数常量         12.23

D:字符常量          'a','e'

E:布尔常量        true,false

F:空常量           null

例子:


public class changliang{

     public static void main(String [] args){

         //字符串常量

         System.out.println("HelloWold");

         //整数常量

         System.out.println(12);

         System.out.println(-23);

         //小数常量

         System.out.println(12.23);

         //字符常量

         System.out.println('a');

         System.out.println('0');

         //布尔常量

         System.out.println(true);

         System.out.println(false);

     }

}

运行结果:


8.变量

变量:是内存中的一小块区域,在程序的执行过程中,其值可以在一定范围内发生改变

组成

     A:对区域有限定------>用数据类型来限定

     B:必须对区域给一个名称----->变量名

     C:区域必须内必须有内容------>初始化值

定义格式

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

9.数据变量

数据类型:Java是一种强类型语言,针对每一种数据都给出明确的数据类型。

数据类型分类:

A:整数           占用字节数

  byte                   1

  short                  2

  int                      4

  long                   8

B:浮点数

  float                   4

  double               8

C:字符

  char                   2

D:布尔

  boolean             1

注意:

A:整数默认是int类型,浮点数默认是double类型

B:定义long类型数据的时候,要加L或者l,建议加L定义float类型的时候要加F或者f,建议加F

例子:

/*

     变量的定义格式:

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

     数据类型:

          byte,short,long,float,double,boolean

     注意:

          定义long类型的变量时,最好直接加L

          定义float类型的变量时,最好直接加F

*/

public class VariableDemo{

     public static void main(String [] args){

          //定义byte类型的变量

          byte b =10;

          System.out.println(10);

          System.out.println(b);

          //定义short类型的变量

          short s = 100;

          System.out.println(s);

          //定义int类型的变量

          int i = 1000;

          System.out.println(i);

          //定义long类型的变量

          long l = 10000000000000L;

          System.out.println(l);

          //定义float类型的变量

          float f = 12.34F;

          System.out.println(f);

          //定义char类型的变量

          char c = 'a';

          System.out.println(c);

          //定义boolean类型的变量

          boolean bb = true;

          System.out.println(bb);

     }

}

运行结果:


例子2:

/*

     变量定义的注意事项:

        A:变量未赋值,不能直接使用

        B:变量只在它所属的范围内有效

            变量属于它所在的那块大括

        C:一行上可以定义多个变量,但不建议

*/

public class VariableDemo2{

    public static void main(String [] args){

        //定义一个变量

        int a = 10;

        System.out.println(a);

        int b ;

        //System.out.println(b);  //----这里未赋值前使用变量,是错误的

        b = 20;

        System.out.println(b);

        {

            //代码块

            int c = 30;

            System.out.println(c);

        }

        //System.out.println(c); //-----这里的c是不存在的,因为变量只在它所属的范围内有效

        /*    int aa,bb;

            aa = 10;

            bb = 20;

            System.out.println(aa);

            System.out.println(bb);

            //但是不建议这么写

        */

        //这么写比上面的写法清晰,和规范

        int aa = 10;

        int bb = 20;

        System.out.println(aa);

        System.out.println(bb);

       }

}

运行结果:


10.标识符

标识符:就是用来给包,类,方法,变量起名字的符号

组成规则:

     A:unicode字符:

          数字字符,英文大小写字母,汉字(不建议使用)

     B:下划线_

     C:美元符号$

注意事项:

     A:不能以数字开头

     B:不用以java中的关键字命名

常见命名规则:

     A:基本要求----->见名知意

     B:常见的命名

         a,包(其实是文件夹,用于对类进行管理)

               全部小写,多级包.隔开

         b,类

               一个单词首字母大写  eg:Student,Car

               多个单词每个单词的首字符大写   eg:HelloWorld

       c,方法和变量

          一个单词首字母小写  eg:age,show()

          多个单词组成从第二个单词开始每个首字母大写  eg:maxAge,getAge()

11.类型转换

当数据类型不一样时,将会发生类型转换

自动类型转换(隐式)

     1.特点:代码不需要进行特殊处理,自动转换

     2.规则:数据范围从下到大


例子:

public class DataTypeDemo{

     public static void main(String[] args){

          System.out.println(1024);//这就是一个整数,默认就是int类型

          System.out.println(3.14);//这就是一个浮点数,默认就是double类型

          //左边是long类型,右边是默认的int类型,左右不一样

          //一个等号代表赋值,将右侧的int常量,交给左侧的long变量进行存储

          //这一行代码发生了自动类型转换

          long num1 = 100;

          System.out.println(num1);//100

          //左侧是double类型,右侧是float类型,左右不一样

          //float ---->double,符合从小到大的规则

          //也发生了自动类型转换

          double num2 = 2.5F;

          System.out.println(num2);//2.5

          //左侧是float类型,右侧是long类型,左右不一样

          //long--->float ,范围是float更大一些,符合从小到大的规则

          //也发生了自动类型转换

          float num3 = 30L;

          System.out.println(num3);

     }

}

运行结果:


强制类型转换(显式)

     1.特点:代码需要进行特殊的格式处理,不能自动完成

     2.格式:范围小的类型 范围小的变量名 = (范围小的类型)原本范围大的类型

注意事项:

     1.强制类型转换一般不推荐使用,因为有可能发生精度损失、数据溢出

     2.byte/short/char这三种类型都可以发生数学运算,例如加法‘+’

     3.byte/short/char这三种类型在运算的时候,都会被首先提升成int类型,再进行运算

     4.boolean类型不能发生数据类型转换

例子:

public class DataTypeDemo2{

     public static void main(String[] args){

          //左边是int类型,右边是long类型,不一样

          //long-->int,不是从小到大

          //不能发生强制类型转换

          //格式:范围小的类型 范围小的变量名 = (范围小的类型)原本范围大的类型

          int num = (int)100L;

          System.out.println(num);

          //long强制转换成int类型

          int num2 = (int)6000000000L;

          System.out.println(num2);//1705032704---->数据溢出

          //double--->int ,强制类型转换

          int num3 = (int)3.99;

          System.out.println(num3);//3----->精度损失,这不是四舍五入,而是所有的小数位被舍

          //弃

          char zifu1 = 'A';//这是一个字符变量,里面是大写字母A

          System.out.println(zifu1+1);//66,也就是大写字母A也被当做65进行运算

          //计算机的底层会用一个数字(二进制)来表示字符A,也就是65

          //一旦char类型进行数学运算,那么字符会按照一定的规则翻译成一个数字

          byte num4 = 40;//注意:右侧的数值大小不能超过右侧的类型范围

          byte num5 = 50;

          //byte + byte ---->int + int ---> int

          int result1 = num4+num5;

          System.out.println(result1);

          short num6 = 60;

          //byte + short ---->int + int ---> int

          //int 强制转换成short,注意必须逻辑上真实大小没有超过short范围

          short result2 = (short)(num4 + num6);

          System.out.println(result2);

     }

}

运行结果:



12.ASCII码表

数字和字符对照关系表(编码表):

     ASCII码表:American Standard code for Information Interchage -美国信息交换标准代码表

    Unincode码表:也是数字和符号的对照关系,开通0-127部分和ASCII码表一样,但从128开始包           含更多字符

    48 - '0'

    65 - 'A'

    97 - 'a'



例子:

public class DataCharDemo{

     public static void main(String[] args){

          char zifu1= '1';

          System.out.println(zifu1+0);//49

          char zifu2 = 'A';//其实底层保存的是65数字

          char zifu3 = 'c';

          //左侧是int类型,右边是char类型

          //char -- > int ,符合从小到大

          //发生自动类型转换

          int num = zifu3;

          System.out.println(num);

          char zifu4 = '中';//正确写法

          System.out.println(zifu4+0);//20013

     }

}

运行结果:


你可能感兴趣的:(Java基本语法)