刚学java  选择传智博客 分享的视频,以下做的备忘

 1.Hello World

   class Demo

   {

     public static void main(String[] args)

    {

      System.out.println("Hello World!");

      }

    }

  *class Demo:用class关键字定义了一个类名为Demo的类

  *public static void main(String[] args): 主方法(主函数)

        特点:固定格式。保证所在类的独立运行

  *System.out.println("hello world"):输出语句,将括号中的数据打印到控制台


   编译 javac Demo.java

   运行 java Demo

   classpath的配置:

     定义在系统中,明确jvm找寻类文件的路径,如果不定义,默认是当前路径

     注意:在定义classpath值时,最后结尾处不要加分号。--classpath中没有class文件时,不会在当前目录下找,真实开发时一般不加

     当出现类找不到的情况时,要考虑是否是classpath配置出现了问题


表示日后学习中,在解决需求时的基本动作:  明确需求--明确思路--明确步骤--明确代码

例如: /*需求:写一个hello world小程序,让控制台显示hello world字样:

 分析(思路):

        1.应该有个类型

        2.这个类还要运行。所以需要一个main方法。

        3.运行时,还需要一个输出显示动作,哪还需要什么呢?哦,原来还需要一个输出语句


  步骤(用代码去体现思路):

         1.用class定义一个类。

         2.定义固定格式的main方法

         3.在主方法中定义个输出语句

         OK!


  实现:

       1.编写具体的代码

       2.通过编译和运行来测试代码

其实代码无非就是思想的一种体现形式而已,写代码,先写中文需求的基本动作,在去实现代码编写。

强调思想很重要,强调代码亦很重要!


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

2.java 语法基础

  java语言的基础组成:关键字、标识符、注释、常量和变量、运算符、语句、函数、数组


 2.1 关键字:将具体的单词赋予了特殊的含义。都是小写的

         如:class,就是用来定义类的关键字

         

关键字的定义和特点

定义:被Java语言赋予了特殊含义的单词

特点:关键字中所有字母都为小写

用于定义数据类型的关键字

class

interface

byte

short

int

long

float

double

char

boolean

void





用于定义数据类型值的关键字

true

false

null



用于定义流程控制的关键字

if

else

switch

case

default

while

do

for

break

continue

return





用于定义访问权限修饰符的关键字

private

protected

public



用于定义类,函数,变量修饰符的关键字

abstract

final

static

synchronized


用于定义类与类之间关系的关键字

extends

implements




用于定义建立实例及引用实例,判断实例的关键字

new

this

super

instanceof


用于异常处理的关键字

try

catch

finally

throw

throws

用于包的关键字

package

import




其他修饰符关键字

native

strictfp

transient

volatile

assert

 


 2.2 标示符:就是用于在程序中自定义的名称

         规则:0-9,a-z大小写。_ $

         注意:数字不可以开头。不可以使用关键字

         Java中严格区分大小写 


 2.3 注释: 注解说明程序  or  用来调试程序

        单行注释: //注释文字

        多行注释: /* 注释文字  */

        文档注释:/** 注释文字 */ 

 

 2.4 常量与变量

     常量表示不能改变的数值

     Java中常量的分类:

       1> 整数常量。所有整数

       2> 小数常量。所有小数

       3> 布尔(boolean)型常量。较为特有,只有两个数值。true false。

       4> 字符常量。将一个数字字母或者符号用单引号( ' ' )标识。

       5> 字符串常量。将一个或者多个字符用双引号(“ ”)标识。

       6> null常量。只有一个数值就是:null.

    对于整数:有四种表现形式

       1> 二进制:0,1 ,满2进1.

       2> 八进制:0-7 ,满8进1. 用0开头表示。

       3> 十进制:0-9 ,满10进1.

       4> 十六进制:0-9,A-F,满16进1.用0x开头


   变量的概念:

       1> 内存中的一个存储区域

      2> 该区域有自己的名称(变量名)和类型(数据类型)

       3> 该区域的数据可以在同一类型范围内不断变化

   为什么要定义变量:

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

   使用变量注意:

       1> 变量的作用范围(一对{}之间有效)  

       2> 初始化值

   定义变量的格式:

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

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

   理解:变量就如同数学中的未知数


   Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间


wKiom1OOmz-D-KRzAAHSW3Ck_hE861.jpg


   自动类型转换(也叫隐式类型转换) 

   强制类型转换(也叫显式类型转换)

   类型转换的原理

   什么时候要用强制类型转换?

   表达式的数据类型自动提升

      1> 所有的byte型、short型和char的值将被提升到int型

      2> 如果一个操作数是long型,计算结果就是long型;

      3> 如果一个操作数是float型,计算结果就是float型;

      4> 如果一个操作数是double型,计算结果就是double型

   分析System.out.println(‘a’)与System.out.println(’a’+1) 的区别

  

   自动类型提升

      byte b = 3;

      int x = 4;

      x = x + b;//b会自动提升为int类型进行运算。

   强制类型转换

      byte b = 3;

      b = b + 4;//报错

      b = (byte)(b+4);//强制类型转换,强制将b+4的结果转换为byte类型,再赋值给b。

   思考:

      byte b1=3,b2=4,b;

      b=b1+b2;

      b=3+4;

   哪句是编译失败的呢?为什么呢


  

  2.5 运算符

     算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、三元运算符

  2.5.1  算术运算符


    wKiom1OOnQTx3UVaAAH2IMVOIOE356.jpg

   算术运算符的注意问题

     1> 如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。但被模数是负数就另当别论。

     2> 对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。

          例如:int x=3510;x=x/1000*1000; x的结果是?

     3> “+”除字符串相加功能外,还能把非字符串转换成字符串 

        例如:System.out.println("5+5="+5+5);//打印结果是?


  2.5.2 赋值运算符

       

    符号:

      = , +=, -=, *=, /=, %=

    示例:

      int a,b,c;  a=b=c =3;

      int a = 3;   a+=5;等同运算a=a+5;

    思考:

      short s = 3;

      s=s+2;

      s+=2;    

      有什么区别?     

  2.5.3 比较运算符


      wKiom1OO0ziAMHYWAAC7YVcdqtU648.jpg

  注1:比较运算符的结果都是boolean型,也就是要么是true,要么是false。

  注2:比较运算符“==”不能误写成“=”


  2.5.4 逻辑运算符

    wKiom1OO097QMfsMAADbkXwe0rA218.jpg

    1> 逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 &x<6               2> “&”和“&&”的区别:

       单&时,左边无论真假,右边都进行运算;

       双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。

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

    3> 异或( ^ )与或( |)的不同之处是:当左右都为true时,结果为false


   2.5.5 位运算符

    wKiom1OO1ZSR7trXAAEtjGtI-PE512.jpg

   

    位运算是直接对二进制进行运算    


    wKioL1OO1aKzugCmAAG274ycZjI262.jpg

  

   2.5.6 三元运算符

    

    格式:  (条件表达式)?表达式1:表达式2

        如果条件为true,运算后的结果是表达式1

        如果条件为false,运算后的结果是表达式2

    示例:

        获取两个数中大数。

        intx=3,y=4,z;z =(x>y)?x:y;//z变量存储的就是两个数的大数



2.6 程序流程控制    ---   判断结构 、 选择结构 、 循环结构


2.6.1  判断结构

   

    1.if(条件表达式)

       {

        执行语句;

         }


    2.if(条件表达式)

       {

        执行语句;

        }

       else

       {

        执行语句;

        }

   

    3.if(条件表达式)

       {

       执行语句;

       }

       else if (条件表达式)

      {

       执行语句;

       }

       ……

       else

       {

       执行语句;

        }

  if语句特点:

    1> 每一种格式都是单条语句。

    2> 第二种格式与三元运算符的区别:三元运算符运算完要有值出现。好处是:可以写在其他表达式        中。

    3> 条件表达式无论写成什么样子,只看最终的结构是否是true 或者 false;

 

  2.6.2 选择结构

   switch语句

   格式:

        switch(表达式)

         {

          case 取值1:

            执行语句;

           break;

          case 取值2:

            执行语句;

           break;

           ...

          default:

            执行语句;

          break;

         }


   switch语句特点:

     1> switch语句选择的类型只有四种:byte,short,int , char

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

     3> 结束switch语句的两种情况:遇到break,执行到switch语句结束。

     4> 如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语         句,直到遇到break或者switch结尾结束

 

    

  代表语句:while , do while , for

  

     while语句格式:

      while(条件表达式)

         {

          执行语句;

          }

     

    do while语句格式:

      do

       {

        执行语句;

        }

      while(条件表达式);



    do while特点:是条件无论是否满足,循环体至少执行一次.


   2.6.3 循环结构


      格式:

       for(初始化表达式;循环条件表达式;循环后的操作表达式)

        {

          执行语句;(循环体)

         }

 注:

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

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

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


     break(跳出),  continue(继续)

     break语句:应用范围:选择结构和循环结构。

     continue语句:应用于循环结构。

 注:

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

   2> 这个两个语句单独存在下面都不可以有语句,因为执行不到。

   3> continue语句是结束本次循环继续下次循环。

   4> 标号的出现,可以让这两个语句作用于指定的范围



练习:

  1.for  三角

class DemoForFor

{

  public static void main (string[] args)

   {

     for  ( int x =1; x<=5;x++ )

     {

         for (int y = x; y<=5;y++)

          {

              System.out.print ("*");

           }

         System.out.println ();

       }

    }

}


    

2.if


class DemoIf

{

public static void main(String[] args) 

{

int x = 3;

if(x>1)

{

System.out.println("a");

}

else if(x>2)

{

System.out.println("b");

}

else if(x>3)

{

System.out.println("c");

}

else

{

System.out.println("d");

}


if(x>1)

{

System.out.println("a");

}

if(x>2)

{

System.out.println("b");

}

if(x>3)

{

System.out.println("c");

}

else

{

System.out.println("d");

}

System.out.println("Hello World!1");


}

}


3.switch

class DemoSwitch

{

public static void main(String[] args) 

{

            int  month = 5;

            switch (month)

            {

               case 3:

               case 4:

               case 5:

                    System.out.println(month+"月是春季");

                break;

               

               case 6:

               case 7:

               case 8:

                    System.out.println(month+"月是夏季");

                break;

               

               case 9:

               case 10:

               case 11:

                    System.out.println(month+"月是秋季");

               break;

                

               case 12:

               case 1:

               case 2:

                    System.out.println(month+"月是冬季");

               break;

               default:

                    System.out.println(month+"月是不存在的");

               break;

             }

         }

}


4.while

class TestWhile 

{

public static void main(String[] args) 

{


/*

打印1-10之间的奇数。


*/

int x = 1;

while(x<10)

{


if(x%2==1)

{

System.out.println("x="+x);

}

x++;

//x++;

}


/*

获取1-10的和。

*/

System.out.println();

/*

0+1+2+3+4+5

1 + 2

3 + 3

 6 + 4

   10 + 5

//加数确定吗?不确定,被加数确定吗?不确定。需要定义两个变量。

*/

int sum = 0,count = 1;


while(count<=10)

{

sum = sum + count;

count++;

//System.out.println("sum="+sum);//使用循环时,一定要明确,哪些语句不需要参与循环。

}

System.out.println("sum="+sum);



//练习:获取1-100之间6的倍数的个数!

}

}