码迷,mamicode.com
首页 > 编程语言 > 详细

Basic--Java基本语法

时间:2015-12-06 21:04:46      阅读:262      评论:0      收藏:0      [点我收藏+]

标签:

第一天

1.Linux:

   开源操作系统、免费的,服务器端

   目录(/根目录),挂载点(目录),高

   基于命令的----pwd,ls,cd

   绝对路径、相对路径

2.java运行环境:

   .java,经过编译,生成.class字节码文件

   jvm加载.class并运行.class

   跨平台,一次编程到处使用

   JVM:java虚拟机

   JRE:java运行时环境

   JRE=JVM+java系统类库

   JDK:java开发工具包

   JDK=JRE+编译、运行等工具

3.eclipse

Linux分两种:

1.带图形界面的------为了便于你们操作

2.不带图形界面的----真正的服务器的操作系统

Windows--------公司中的是

Linux----------java程序写好后配到服务器

补充知识点:

1.Linux目录结构

Windows操作系统的目录结构,是以盘符为单位,C盘、D盘、E盘等等,数据存储在各个盘符之下,而Linux操作系统最顶层只有一个根目录root,所有文件都存储在这一个根目录之下。

Windows操作系统若插入一个外部设备(U盘等),在系统中是多了一个盘符H,对H盘的操作就是对外部设备的操作。Linux操作系统是在根目录root下有一个名叫mnt的子目录,在这个目录下,会出现一个目录,假设为sdcard,称之为挂载点,对它的操作就是对外部设备的操作。

Windows操作系统某用户登录系统后,对所有文件都具有增删改查的权限,即:可以操作任意目录,假设将C盘下Windows目录删除,则会导致系统异常,安全性较差。Linux操作系统对权限要求比较严格,用户登录后并非对所有目录具有增删改查权限,默认的当前目录为根目录下的home目录下的soft01,称之为主目录,对这个目录具有最高权限,其余目录文件一般都是只读的,不能随意删除,这样就保证了安全性。

2.Java程序遵循着先编译、后执行的原则。首先,通过javac命令将JAVA源程序(.java文件)编译为JAVA字节码(.class文件),而后,通过java命令启动JVM,由JVM来加载.class文件并运行.class文件。

3.系统类库即为java提前封装好的功能类,只需拿来直接使用即可,可以大大的提高开发效率。

4. JVM就是一个软件。它是用软件“虚拟”出的一个硬件机器。和真实的硬件机器一样,这个“虚拟机”定义有指令集、寄存器、存储区等细节;而Java字节码可以看成是在这个“虚拟机”上运行的机器码。正是由于Sun定义了JVM规范,而且不同的操作系统提供了不同的JVM实现,才使得相同的一个字节码文件可以在不同的系统上运行(当然这些系统必须安装有适用于该系统的JVM),从而使Java赢得了“一次编译,到处使用”的称谓。JVM是用本地C实现的,所以,Linux系统和Windows系统使用的JVM不同。

5. 名词解释JVM、JRE、JDK

JVM (Java Virtual Machine)称之为Java虚拟机,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。

JRE(Java SE Runtime Environment)称之为Java SE运行时环境,提供了运行Java应用程序所必须的软件环境,包含有Java虚拟机(JVM)和丰富的类库(Libraries)。运行一个已经开发好的Java应用必须安装JRE。

JDK( Java Development Kit)称为Java开发工具包,是JRE的超集,或者说JDK包含了JRE。JDK中除了包含有JRE的所有内容之外还提供了编写Java程序所必须的编译器和调试工具等。对于进行Java开发的人士一般需要下载JDK,目前的主流版本为JDK 6。

6. 在Linux系统下可以使用./eclipse启动执行程序eclipse

第二天

1.变量:存数的,代词,指代的就是它所存的那个数

  1)声明:

      int a; //声明一个整型变量,名为a

      int b,c,d; //声明三个整型变量,名为b,c,d

  2)命名:

    2.1)只能包含字母、数字、_和$符,

        并且不能以数字开头

    2.2)严格区分大小写

    2.3)不能使用关键字

    2.4)可以中文命名,但不建议

        建议:见名知意、驼峰命名法

  3)初始化:第一次赋值

    3.1)声明同时初始化

        int a=250;

    3.2)先声明后初始化

        int a;

               a=250;

  4)使用:

    4.1)必须与数据类型匹配

        int a=25.678; //编译错误,类型不匹配

    4.2)对变量的操作就是对那个数的操作

        int a=5,b=10;

               int c=a+b; //取出a中的5,加上b中的10,赋值给c

               System.out.println(c); //输出c中的那个数15

    4.3)变量用之前必须声明并初始化

        System.out.println(m); //编译错误,变量未声明

        int m;

               System.out.println(m); //编译错误,变量未初始化

               int m=250;

               System.out.println(m); //正确

2.基本数据类型:

  1)int:整型,4个字节,-21个多亿到21个多亿

    1.1)整数直接量默认为int型,若超范围则编译错误

    1.2)两个整数相除,结果还是整数,小数位无条件舍弃

    1.3)运算时,若超出int范围,则溢出----需要避免

  2)long:长整型,8个字节,很大很大很大

    2.1)long类型的直接量为数字后加L或l

    2.2)运算时若有可能超范围则设置第一个数加L

    2.3)System.currentTimeMillis();

        获取自1970.1.1零时到此时此刻的毫秒数

  3)double:浮点型,8个字节

    3.1)小数直接量默认为double型

    3.2)double有舍入误差,精确运算场合不可使用

  4)boolean:布尔型,1个字节

    4.1)只能取值为true和false

  5)char:字符型,2个字节

    5.1)采用unicode编码格式,每个字符对应一个码

        ASCII码--‘a‘(97) ‘A‘(65) ‘0‘(48)

    5.2)字符需放在一对单引号中

        必须有并且只有一个

    5.3)特殊符号需使用\来转义

3.数据类型间的转换:

    类型从小到大如下所示:

      byte-short-int-long-float-double

           char--

  1)两种方式:

    1.1)自动类型转换:从小类型到大类型

    1.2)强制类型转换:从大类型到小类型

                              强转可能会溢出或精度丢失

  2)两点规则:

    2.1)整数直接量可以直接赋值给byte,short,char, 但不能超范围

    2.2)byte,short,char类型变量参与运算时,

        先一律转换为int再运算

4.Scanner的用法:

  1)在package下:

      import java.util.Scanner;

  2)在main的{}中:

      Scanner scan = new Scanner(System.in);

  3)在第2步之下:

      int age = scan.nextInt();

      double price = scan.nextDouble();

补充知识:

1.直接量超范围--------编译错误

算术运算超范围------溢出(不是错误,不好的现象)

2. 通过代码计算一段程序运行的时间

使用了JDK提供的 System.currentTimeMillis() 方法,该方法返回1970年1月1日零点到此时此刻所经历的毫秒数,其数据类型为long,经常用于计时操作。

3.  char ascii=98;

System.out.println(ascii);

上述代码的输出结果为:b

原因是如果把0~65535范围内的一个int整数直接量赋给char类型变量,系统会自动把这个int类型整数当成char类型来处理。

4.. byte b1=10;  

byte b2=20;

byte b3=b1+b2; 上述代码在第三行会出现编译错误,原因是b1+b2的结果为int类型。使用强制类型转换,将int类型结果转换为byte类型

第三天

1.运算符:

  1)算术运算符:+-*/%,++,--

  2)关系运算符:>,<,>=,<=,==,!=

  3)逻辑运算符:&&,||,!

  4)赋值运算符:=,+=,-=,*=,/=,%=

  5)字符串拼接:+

  6)三目运算符:boolean?数1:数2

2.分支结构:

  1)if结构:1条路

  2)if...else结构:2条路

  3)if...else if结构:多条路

  4)switch...case结构:多条路

    优点:效率高、结构清晰

    缺点:整数、相等

    break:跳出switch

补充:

1.使用“+”进行字符串连接

“+”除了可以进行算术运算以外,还可以实现字符串的连接,同时可以实现字符串与其他数据类型的“相连”。

当 + 号作用于两个数字类型变量时,是在进行算术运算。

当 + 号两边的变量有一个是字符串类型,即””括起来的时候,则其进行的是字符串的连接,连接后的结果为字符串类型

2. java语法规定,当if语句块中只包含一条语句时,可以省略“{}”,但是if语句块也只能作用于它下面的一条语句。考虑到代码的可读性、扩展性,建议即便if语句块中只有一条语句,也不要省略“{}”。

3. ,switch是以case后的整型常量值作为入口的,若值相等,即开始执行其后面的语句。

使用switch时需要注意两个问题,第一,case后面的常量值必须不同,第二,switch后面的整型表达式的值必须是整型或字符型

4. 1.算术运算符:+,-,*,/,%,++,--

  1)%:取余、取模----余数为0即为整除

  2)++/--:自增1/自减1,可放在变量前也可放在变量后

   2.1)单独使用时,在前在后无差别

   2.2)在被使用时,在前在后有差别

     2.2.1)a++的值为a的值

     2.2.2)++a的值为a+1的值

第四天

1.循环:反复的执行一段相同或相似的代码

2.循环三要素:

  1)循环变量的初始化

  2)循环的条件(以循环变量为基础)

  3)循环变量的改变(向着循环的结束变)

  循环变量:在循环过程中所改变的那个量

3.循环结构:

  1)while:先判断后执行,有可能一次都不执行

  2)do...while:先执行后判断,至少会执行一次

               第1要素与第3要素相同时首选

  3)for:应用率最高的

补充

  1. 随机生成0到99之间的随机数Math.random()*100

Math.random()--------0.0到0.99999999.....

  1. public static void main(String[] args) {

        int count=0;

        while(count<5);

{

            System.out.print(count+" ");

            count++;

        }

    }

这段代码会形成一个死循环。

乍一看,这段代码片段没有任何问题,但仔细看一下这个程序,不难发现while循环的循环条件表达式后紧跟了一个分号。在Java中,一个单独的分号表示一个空语句,不做任何事情的空语句,这意味着这个while循环的循环体是空语句。空语句作为循环体也不是大问题,问题是当Java反复执行这个循环时,循环条件的返回值没有任何变化,这就形成了一个死循环。分号后面的代码块则与while循环没有任何关系。

3. 变量的作用域/范围:

          从变量的声明开始,到包含它最近的大括号结束

.变量的同名问题:

          作用域重叠时,变量不能同名

第五天

1.三种循环结构的更佳适用情况:

  1)while:"当..."循环

  2)do...while:"直到..."循环

               第1要素与第3要素相同时首选

  3)for:固定次数循环

2.嵌套循环:

  1)循环中套循环,一般多行多列时使用

    外层控制行,内层控制列

  2)执行过程:外层循环走一次,内层循环走所有次

  3)循环层次越少越好,能用一层就不用两层,能用两层就不用三层

    如果需求必须3层以上才能实现,说明设计有问题

  4)break只能跳出一层循环

3.程序=算法+数据结构

    算法:解决问题的流程/步骤(顺序、分支、循环...)

    数据结构:将数据按照某种特定的结构来保存

             数怎么存

    设计良好的数据结构会导致好的算法

4.数组:

  1)相同数据类型元素的集合

  2)数组是一种数据类型(引用类型)

  3)数组的定义/声明:

      int[] arr = new int[4];

  4)数组的初始化:

      int[] arr = new int[3];       //0,0,0

      int[] arr = {1,3,5};          //1,3,5

      int[] arr = new int[]{1,3,5}; //1,3,5

      int[] arr;

      arr = {1,3,5}; //编译错误

      arr = new int[]{1,3,5}; //正确

  5)数组的访问:

    5.1)通过.length获取数组的长度

        int[] arr = new int[4];

        System.out.println(arr.length); //4

    5.2)通过下标/索引来访问数组中的元素

        下标从0开始,最大到.length-1

          int[] arr = new int[3];

        arr[0] = 100; //给arr中第一个元素赋值为100

          arr[1] = 200; //给arr中第二个元素赋值为200

          arr[2] = 300; //给arr中第三个元素赋值为300

          arr[3] = 400; //异常

        System.out.println(arr[arr.length-1]); //输出最后一个元素

  6)数组的遍历:

      int[] arr = new int[4];

      for(int i=0;i<arr.length;i++){

        arr[i] = 100;

      }

      for(int i=0;i<arr.length;i++){

        System.out.println(arr[i]);

      }

      for(int i=arr.length-1;i>=0;i--){

        System.out.println(arr[i]);

      }

  7)数组的复制:

      System.arraycopy(a,1,a1,0,4);

      int[] a1 = Arrays.copyOf(a,6);

      a = Arrays.copyOf(a,a.length+1);

  8)数组的排序:

      Arrays.sort(arr); //升序排

      冒泡排序

补充:

1. 冒泡原理:

1)4个数冒3轮

2)每一轮都是从第1个元素开始比

  每一次都是和它的下一个元素比

3)冒出来的数就不带它玩了

2. Pascal之父Nicklaus Wirth说过一句话并因此而得了图灵奖,这句很经典的话就是,程序即为:算法+数据结构,所谓数据结构,简单的说就是把数据按照特定的某种结构来保存,设计合理的数据结构是解决问题的前提条件。

3. 数组为相同数据类型的元素组成的集合,数组元素按线性顺序排列,所谓线性顺序是指除第一个元素外,每一个元素都有唯一的前驱元素;除最后一个元素外,每一个元素都有唯一的后继元素(“一个跟一个”),可以通过元素所在位置的顺序号(下标)做标识访问每一个元素(下标从0开始,最大到元素个数-1)

4.定义基本类型数组的要点包括:

确切的数据类型:用于开辟空间大小

整体的数组名字:用于对数据的引用

不能缺少的“ [ ] ”

注意在定义数组时使用的new关键字, 正是因为new语句,才使得数组分配到了指定大小的空间(后面详细讲解)。

5.声明数组的时候,int[] arr 与 int arr [] 两种写法均可。常用方式为int[] arr。

6.声明数组时不规定数组长度(可以看到声明时仅指定了int[],未指定长度),new关键字分配空间时需指定分配的空间大小(new int[10])。

7.总结出Arrays.copyOf()方法的特点如下列表所示:

生成的新数组是原始数组的副本;

newLength小于源数组,则进行截取;(自己通过代码演示效果);

newLength大于源数组,则用0或 null进行填充;

第六天

1.方法:

  1)用于封装一段特定的逻辑功能

  2)方法应尽可能独立,一个方法只干一件事

  3)方法可以被反复调用多次

  4)结构清晰、便于维护、便于协作开发

2.方法的定义:

  修饰词 返回值类型 方法名(参数列表){

    方法体

  }

3.方法的调用:

  1)无返回值:

      方法名(有参传参);

  2)有返回值:

      数据类型 变量 = 方法名(有参传参);

4.return:

  1)return; //结束执行(void方法中)

  2)return 值; //结束执行并返回结果(有返回值方法中)

Basic--Java基本语法

标签:

原文地址:http://www.cnblogs.com/liuxu0310/p/5024336.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!