Java基础和语句结构

来源:互联网 发布:知柏地黄丸与难入睡 编辑:程序博客网 时间:2024/04/30 09:44

一、Java概述
1、Java语言概述和技术体系架构
Java是SUN(Stanford University Network,斯坦福大学网络公司)1995年推出的一门高级编程语言。是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Java的起源:一个Green项目
1995年,Oak正式更名为java
1996年,Sun公司发布JDK1.0
1998年,发布了1.2,也叫java2
1999年,Sun公司把java技术分成了J2SE,J2ME,J2EE
2000年,JDK1.3,1.4发布
2005年,Java的各个版本取消2
Java语言的三种技术架构:

     1. J2SEJava 2 Platform Standard Edition)标准版是为开发普通桌面和商务应用程序提供的解决方案。该技术体系是其他两者的基础,可以完成一些桌面应用程序的开发。比如Java版的扫雷。     2. J2EE(Java 2 Platform Enterprise Edition)企业版是为开发企业环境下的应用程序提供的一套解决方案。该技术体系中包含的技术如 Servlet Jsp等,主要针对于Web应用程序开发。     3. J2ME(Java 2 Platform Micro Edition)小型版是为开发电子消费产品和嵌入式设备提供的解决方案。该技术体系主要应用于小型电子消费类产品,如手机中的应用程序等。

Java5.0版本后,更名为 JAVAEE JAVASE JAVAME
2、Java语言特性(跨平台)
高级语言的工作原理
windows下的c语言编程过程
c源程序(扩展名.c)——–>windows可执行性文件——–>windows操作系统
java语言编程过程
Java源程序(扩展名.java)——–>Java字节码文件(扩展名.class)——–>jvm虚拟机(跨平台)
3、JDK,JRE及JVM之间的关系
JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK。JDK 是整个Java的核心,包括了Java运行环境、Java工具和Java基础类库。
JRE(Java Runtime Environment,Java运行环境),运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。编译虚拟机的指令集与编译微处理器的指令集非常类似
4、JDK的下载,安装及卸载
JDK(Java Development Kit Java开发工具包)
下载jdk官方网址:www.oracle.com;java.sun.com
安装jdk:傻瓜式安装,下一步即可。建议:安装路径不要有中文或者特殊符号如空格等。当提示安装JRE时,可以选择不安装。
5、环境变量Path的配置,notepad命令
我的电脑–属性–高级–环境变量
编辑path环境变量,在变量值开始处加上java工具(JDK)所在目录,后面用 “ ; ”和其他值分隔开即可。
打开DOS命令行,任意目录下敲入javac。
如果出现javac 的参数信息,配置成功。
6、环境变量CLASSPATH的配置
JVM查找类文件的顺序:
如果没有配置classpath环境变量,JVM只在当前目录下查找要运行的类文件。
如果配置了classpath环境,JVM会先在classpath环境变量值的目录中查找要运行的类文件,值的结尾处如果加上分号,那么JVM在classpath目录下没有找到要指定的类文件,会在当前目录下在查找一次。
值的结尾处如果没有分号,那么JVM在classpath目录下没有找到要指定的类文件,不会在当前目录下查找,即使当前目录下有,也不会运行。
建议:配置classpath环境变量时,值的结尾处不要加分号,如果需要访问当前目录可以用 “.;”表示。
7、第一个Java经典程序“HelloWorld”
package cn.itcast;
/第一个程序,hellowrold/

public class HelloWorld {    public static void main(String[] args) {        System.out.println("HelloWrold");    }}

输出结果:HelloWrold
二、Java关键字和标识符

1、Java关键字
被Java语言赋予了特殊含义的单词,如:public,class,private,if,for,catch等等…;
特点:关键字中所有字母都为小写。goto和const虽然从未使用,但也作为 Java 关键字保留,记住保留字也是不能当作标识符,java中是没有sizeof这个关键字的,这个标识符在C中。
二、标识符
Java语言中,对各种变量、方法和类等要素命名时使用的字符序列称为标识符。简单记,就是起名字。
命名规则:

  • 由26个英文字母大小写,数字0-9,_,$等组成。
  • 不能以数字开头。
  • 不能与java的关键字重名。
  • 命名规范 见名知意,驼峰命名。
  • 包—>所有单词小写。看成是一个文件夹。如我以黑马的网址命名我的项目:www.itcast.cn cn.itcast.包的作用 则该文件中所有的类位于cn/itcast/这个路径下
    类和接口:
    1. 如果是由一个单词组成,那么单词首字母大写。举例:Test,Demo。
    2. 如果是由多个单词组成,那么每个单词的首字母大写。举例:TestDemo。
    变量与方法:
    1.如果是由一个单词组成,那么单词首字母小写。举例:student,show。getMax()。
    2.如果是由多个单词组成,第一个单词首字母小写,其后每个单词的首字母大写。举例:stuName。getMax();
    常量:
    1.如果是一个单词组成,那么所有单词全部大写。举例:SUM。
    2.如果由多个单词组成,每个单词大写,并且以下划线相连接。举例:STUDENTMAXAGE。
    三、注释

    注解说明代码的,用于给人看的。

    注释的分类:
    1. 单行注释 //
    2. 多行注释 /* */
    3. 文档注释 /* /
    注释的用途:1、注解说明文字;2、用于调试代码。
    四、变量和常量

变量:
在程序的运行过程中,其值在指定范围内变化的值,是内存中一个区域,用于存储数据。
变量的定义格式:
A:数据类型 变量名 = 初始化值;
变量在使用的时候有两种形式:
A:第一种,在声明的时候,就初始化值;数据类型 变量名 = 初始化值;举例:int x=12; System.out.println(x);
B:第二种 在使用前,赋值–>(声明、赋值、使用);举例 byte y;y= 100; System.out.println(y);
常量:
整数常量:所有整数;小数常量:所有小数;布尔型常量:较为特殊,只有两个数值。true false;字符常量:将一个数字字母或者符号用单引号(”)标识.;字符串常量:将一个或者多个字符用双引号标识;null常量:只有一个数值就是:null。
五、数据类型及数据类型转换
1、java语言分为两种数据类型:
A:基本数据类型
B:引用数据类型(类,接口,数组)
基本数据类型:
A:区别 在内存中分配的空间大小不同,从而导致它表示的数据范围不同
B:4类8种
整数:byte 占1个字节//8个开关,8个二进制位 1byte = 8bit;short 占2个字节;int 占4个字节0;long 占8个字节 其后加L或l标识
浮点数float:float 占4个字节 其后加F或f标识,如(3.3f )
double :占8个字节,如(2.34)
字符:char 占2个字节 0 - 65535
布尔型:只有两种(true,false),占一个字节
*注意:默认情况下,整数是int类型,浮点数是double类型
2、数据类型转换

1、整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则
容量小的类型与容量大的类型进行计算,默认转换为容量大的数据类型;数据类型按容量大小排序为:
byte,short,char->int->long->float->double
byte 和 short运算时不能和char之间互相转换,byte可以直接赋值给short,但是他们三者在计算时首先会转换为int类型容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出;使用时要格外注意。有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再进行计算。
2、强制转换符
格式:(数据类型)(要被转换的数据) byte b = (byte)(300);
3、字符型参与运算
首先会去找对应字符的unicode码值。然后运算。char 类型取值范围0~2(16)-1。
4、布尔型不能参与运算
5、字符串参与运算,它是和参与运算的数据相连接组成了一个新的字符串。
六、Java运算符
1、算术运算符+,-,*,/,%,++,–
重点:
a:%(取余)
当左边的绝对值小于右边:结果是左边
当左边的绝对值等于右边或者是右边倍数的时候:结果是0
当左边的绝对值大于右边:结果是余数,符号取决与左边的的符号
取余的正负号取决于左边,右边忽略不记
用途:任意正整数%2 结果是要么0,要么1。用于切换条件
b:++(递增),–(递减)
递增,递减运算符。就是加1或者减1
单独存在,放在操作数的前面或者后面,结果一样
参与运算时:
放在变量的前面,先自身加或者减1,然后再参与运算
放在变量的后面,先参与运算,然后再自身加或者减1
c:+作为数据的符号(正号),做加法运算,字符串连接符”5 + 5 =” + (5 + 5);
2、赋值运算符
A:=:赋值运算符 把右边的值赋给左边
举例:int x = 3; 把3赋给int类型变量x
int a,b,c;
a = b = c = 5;
B:+=:加赋值运算符 把左边和右边的和赋给左边
举例:int x = 3; x+=2;等同于 x = x + 2;
面试题:

byte b = 5;b = b + 2;b += 2; b = (byte)(b + 2);System.out.println(b);

会不会报错?
答:会报错,因为b = b + 2;出现数据转换错误,必须强制类型转换,如:

package cn.itcast;public class TransDemo {    public static void main(String[] args) {        byte b = 5;        b = (byte) (b + 2);        b += 2; b = (byte)(b + 2);        System.out.println(b);    }}

输出结果:11
注意:b += 2;因为+=运算符在给b赋值时,自动完成了强转操作。
3、比较运算符==,!=,>,<,>=,<=
比较运算符的结果都是boolean型,也就是要么是true,要么是false。
4、逻辑运算符
逻辑与运算符 &:
第一个条件 第二个条件 结果
true true true
false true false
true false false
false false false
简单记:左右两边同时为true,结果为true。
逻辑或运算符 |:
第一个条件 第二个条件 结果
true true true
false true true
true false true
false false false
简单记:左右两边只要有一个结果是true,结果为true。
逻辑异或运算符 ^:
第一个条件 第二个条件 结果
true true false
false true true
true false true
false false false
简单记:左右两边相同,结果为false。(相同为0,不同为1)
逻辑非运算符 !:
!true false
!false true
!!true true
短路与:
&:左边无论什么结果,右边都执行。
&&:左边为false,右边不执行,结果为false。
短路或:
|:左边无论什么结果,右边都执行。
||:左边为true,右边不执行,结果为true。
5、位运算符
位运算符2<<3 2 * 8 == 2 * 2^3

一个整数向左移动几位就乘以2的几次幂
一个整数向右移动几位就除以2的几次幂,高位是0就补0,高位是1就补1
无符号右移无论最高位的符号位是0还是1,用无符号右移后高位符号位都是补0
6、三元运算符
格式 :(条件表达式)?表达式1:表达式2;
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2;
条件运算符运算完之后一定有一个结果
如:

int x,y,z;x = 1;y = 2;z = x > y ? x+y : y;

第二讲 Java语句结构

一、顺序结构

顺序结构:按前后顺序执行的语句体。

package cn.itcast;public class OrderDemo {    public static void main(String[] args) {        int x=1;        int y=4;        int z=x+y;        System.out.println("x+y="+z);    }}

结果:顺序执行,x+y=5;
二、判断语句if

if语句有三种格式:
第一种:if(){}

if(条件表达式){    执行语句;}
举例:package cn.itcast;public class IfDemo {    public static void main(String[] args) {        int x=10;        if(x>8){//条件表达式            System.out.println("这是第一种if格式");//执行语句        }        System.out.println(x);    }}

第二种: if(){}else{}

if(条件表达式){      执行语句;       }else{              执行语句;   }
举例:import java.util.*;public class if_else{          public static void main(String args[]){                       System.out.println("请输入你的成绩:");                       Scanner in=new Scanner(System.in);                        int score=in.nextInt();                        if(score>90){                                 System.out.println("奖励你一根棒棒糖");                 }                       else{                                   System.out.println("面壁思过");                 }           }   }

第三种:if(){}else if(){}else

if(条件表达式){       执行语句;}else if (条件表达式){      执行语句;}else{      执行语句;}
举例:import java.util.*;public class if_else1{            public static void main(String args[]){                       Scanner in=new Scanner(System.in);                       System.out.println("请输入你的成绩:");                       int score=in.nextInt();                      if(score>=90){                          System.out.println("优秀");                      }else if(score>=80){                           System.out.println("良好");                                     }else if(score>=60){                            System.out.println("中等");                      }else {                             System.out.println("差");                     }                      System.out.println("好好测试");    }                      }

4、if语句嵌套
多个if语句的嵌套使用

举例:int x = 2, y = 1;    if(x==1){        if(y==1){            System.out.println("a");        }else{            System.out.println("b");        }    }else{        if(y==1){            System.out.println("c");        }else{            System.out.println("d");        }    } 

三、分支结构switch

格式:int x = 1;switch (表达式){//byte,short,int,char,String 枚举case 表达式里对应的值:    执行语句;break;case 表达式里对应的值:    执行语句;break;......default:    执行语句;break;//最后一句的break可写可不写,因为程序已经执行到了末尾}
我做一个关于判断输入月份是30天还是31天或者28的例子package lesson3;import java.util.Scanner;public class Switch {    public static void main(String [] args){        Scanner in=new Scanner(System.in);//键盘输入        System.out.println("请输入月份:");        int month=in.nextInt();//接收输入的数字            if(month==1|month==3|month==5|month==7|month==8|month==10|month==12){                System.out.println(month+"月31天");            }           if(month==4|month==6|month==9|month==11){               System.out.println(month+"月30天");           }            if(month==2){                 System.out.println(month+"月28天");        }    }}

2、switch的嵌套使用

例子:交通灯案例package lesson3;import java.util.Scanner;public class SwitchTrafficLights {     public static void main(String[] args){         Scanner scan=new Scanner(System.in);//键盘输入         System.out.println("请输入交通信号灯(红、绿、黄):");         String str=scan.next();         char L=str.charAt(0);         switch(L){             case '红':                 System.out.println("有木有交警?");                 String str1=scan.next();                 char P=str1.charAt(0);                /* if(P=='有'){//第一种                     System.out.println("stop");                 }else{                     System.out.println("go");                 }*/                 switch(P){//第二种                 case '有':                     System.out.println("stop");                     break;                 default:                     System.out.println("go");                 }                 break;             case '绿':                 System.out.println("go");                 break;             case '黄':                 System.out.println("wait");                 break;            default:                System.out.println("call Police!!");         }     }}

switch结束的两种情况:
1,当程序执行过程中遇到了break

2,当程序执行到了末尾处

switch语句需要注意的两个细节:
1,当switch表达式的值与其中一个case匹配的时候,这个case里没有写break;语句,那么程序会继续执行下个case里的执行语句,不会再对case值进行判断;

2,应用于当几个case里的值所要执行的语句都一样的时候,我们可以不写break

四、循环语句For

1、for循环

格式:for(初始化表达式1;循环条件表达式2;循环后的操作表达式4){    执行语句;(循环体)3}案例:计算1-10的阶乘package lesson3;public class ForExample3 {    public static void main(String[] args){        int num=1;        for(int i=1;i<=10;i++){            num*=i;            System.out.println(i+"阶乘"+num);        }    }}

2、for循环嵌套及案例

格式:for(初始化表达式;循环条件表达式;循环后的操作表达式){//这是外层循环    执行语句;(循环体){    //下面是内循环    for(初始化表达式;循环条件表达式;循环后的操作表达式){        执行语句;(循环体)    }}   案例:用for循环做右边的这个形状/*  *               ****             * ******          *   ********       *     ******          *   ****             * * *               *              */package lesson3;public class ForExample6 {    public static void main(String[] args){        //上半部分        for(int i=1;i<=4;i++){//外循环            for(int j=1;j<=4-i;j++){//内循环                System.out.print(" ");            }            for(int j=1;j<=2*i-1;j++){//内循环                if(j==1|j==2*i-1){                    System.out.print("*");                }else{                    System.out.print(" ");                }            }            System.out.println();        }        //下半部分        for(int i=3;i>=1;i--){            for(int j=1;j<=4-i;j++){                System.out.print(" ");            }            for(int j=1;j<=2*i-1;j++){                if(j==1|j==2*i-1){                    System.out.print("*");                }else{                    System.out.print(" ");                }            }            System.out.println();        }    }}

结果:这里写图片描述

五、循环语句while

1、while循环

格式:while (条件表达式){    循环体;}
案例:求1-100之内奇数和偶数的和package lesson3;public class WhileExample1 {    public static void main(String[] args) {     int i=1;     int sum1=0;     int sum2=0;     while(i<=100){        if(i%2!=0){            sum1+=i;            }else{            sum2+=i;        }        i++;     }     System.out.println("1-100奇数的和:"+sum1);     System.out.println("1-100偶数的和:"+sum2);    }}

2、do while循环

格式:do{    循环体;    控制循环次数}while (条件表达式);
案例:1-100之间能被56整除的数,1-100之间奇数和偶数的和package lesson3;public class DoWhileExample1 {    public static void main(String[] args){        int i=1;        int sumOdd = 0;        int sumEven = 0;        do{            if(i%2 != 0){//判断是否奇数                sumOdd += i;            }else{//不是奇数就是偶数                sumEven += i;            }            if(i%5==0&&i%6==0){                System.out.println("1-100之间能被5和6整除的数是:"+i);            }            i++;        }while(i<=100);        System.out.println("1-100奇数的和是:"+sumOdd);        System.out.println("1-100偶数的和是:"+sumEven);    }}

*注意:while和do while的区别:

  • do while语句会先执行循环体,再去判断条件,也就是说无论条件是否满足他都至少要执行一次循环体,先执行,再判断
  • while 先判断条件,只要条件不满足就不在执行循环体了,先判断,再执行.

六、流程控制continue和break

  • 这两个语句离开应用范围,存在是没有意义的。
  • 这两个语句单独存在下面都不可以有语句,因为执行不到。
  • continue语句是结束本次循环继续下次循环。
  • break语句是结束循环
  • 标号的出现,可以让这两个语句作用于指定的范围。
0 0
原创粉丝点击