java概述

Java概述

Jre:java运行环境

Jvm:java虚拟机

Jdk:java开发工具包。包含了jre,安装了jdk就不用安装jre。包含了javac.exe (编译工具)和java.exe(运行工具)等。

即使用jdk开发完成的java程序,交给jre运行。

jdk下载:通过官方网站获取JDK:http://www.oracle.com

Java语言是跨平台的,可以在不同的系统中运行。是因为有jvm的存在,原理是:只要在需要运行java应用程序的操作系统上,先安装一个java虚拟机即可。由jvm来负责java程序在该系统中的运行。

配置环境变量:

path:去哪里找编译或运行等工具(必须设置),在path里加上分号之后粘贴jdk的bin的目录和jre的bin的目录。

eg:;C:\Program Files\Java\jdk1.8.0\bin;C:\ProgramFiles\Java\jdk1.8.0\jre\bin

JAVA_HOME:jdk的安装目录(新建环境变量)

          eg:C:\Program Files\Java\jdk1.8.0\bin

classpath:去哪里找需要运行的class文件(可以不用设置,建议设置)(新建环境变量),先写一个.;  (点和分号),后面在跟上jdk下面的lib目录,lib所在的上一层目录和JAVA_HOME一样,所以可以引用,即加上%引用变量名。

         eg:.;%JAVA_HOME%/lib

java概述_第1张图片

程序分析:

1.     编写java源代码程序,文件扩展名为.java

2.     通过javac.exe对代码进行编译,生成字节码文件(即class文件,虚拟机能看懂的文件)

3.     通过java.exe对class文件进行运行。执行时不需要加.class后缀名。

java概述_第2张图片

Java中注释(使代码具有可读性)分类格式:

单行注释  格式://注释文字

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

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

关键字:被Java语言赋予特定含义的单词。全部小写

标识符(给类,接口,方法,变量等起名字时使用的字符序列)

组成:字母数字下划线$,不能以数字开头,需要区分大小写。

常见命名规则:

包(其实就是文件夹,用于解决相同类名问题):纯小写,单词之间用点连接(com.yunhe.cn)

类或者接口:每个单词首字母大写(HelloWorld)

方法和变量:第一个单词首字母小写,第二个单词开始首字母大写(main,userName)

成员变量(全局变量)和局部变量:

成员变量是在类内方法外定义,作用范围是整个类,可以不赋初始值,系统自动分配该类型的默认值。

局部变量是在方法内定义,作用范围是从定义他的地方开始,到他所定义的代码块结束的地方,必须赋初值。

常量:纯大写

数据类型:(基本数据类型,引用数据类型)

四类八种基本数据类型:数值型(整数类型:byte,short,int,long。浮点类型:float,double)

字符型(char)

布尔型(boolean)

引用数据类型

类型转换:

默认转换:

byte,short,char—int—long—float—double

byte,short,char相互之间不转换,他们参与运算首先转换为int类型

强制转换:

       目标类型 变量名=(目标类型)(被转换的数据);

Int b = (int)a;

byte,short,char在做运算的时候,默认转为int
Eg:
byte b1 = 12,b2 = 13;//声明byte变量b1 = 12,b2 = 13
byte b3 = (byte)(b1+b2);//做运算
System.out.println("b3的值是"+b3);//错误: 不兼容的类型: 从int转换到byte可能会有损失(报错原因:在byte做运算时,会自动转换为int,所以应该定义一个int类型的变量b3来接收,此处定义的变量b3是byte类型,所以会报错)
byte b1 = 13;
byte b2;
byte b4 = (byte)(b1+b2);//Var5.java:23: 错误: 可能尚未初始化变量b2
 

整数类型默认是int,所以在定义long类型时,默认是int类型的,当数值超出int类型的范围时,系统就会报错,所以在用long类型时需要在数值后面加上L或l。

浮点型默认是double类型,所以在定义float类型时需要在数值后面加上F或f。如:float a = 3.014f;

自增自减

java概述_第3张图片

+=符号:表示把运算符左边的变量与右边进行运算,再把结果赋值给左边变量。自带强转。

Eg:
byte b1 = 13;
b1 += 4;(不会报错,因为+=符号在运算时自带强转)
//b1 = b1+4;//不兼容的类型: 从int转换到byte可能会有损失(报错原因:byte在运算时会自动转换为int类型)
运算符:
&:   有false则为false(与运算)
|:  有true则为true(或运算)
^:  相同则为false  不同则为true(异或运算)
!:   偶数个结果不变   奇数个结果相反(非运算)
&&:  与  & 结果一致(与&的区别是:&&在进行左边的运算时如果结果是false,那么就已经确定了左右最后的运算结果是false,所以右边就不进行运算。当左边的是true时,才会对右边进一步运算。一般用&&较多。而&两边都做运算。)
|| 与| 结果一致(与|的区别是:||在进行左边的运算时如果结果是true,那么就已经确定了左右最后的运算结果是true,所以右边就不进行运算。当左边的是false时,才会对右边进一步运算。一般用||较多。而|两边都做运算。)
Eg:
int a = 3;
int b = 4;
boolean b2 = (++a == 3 && b++ == 4);//a先自增再赋值,++a的结果是4,&&左边的运算结果是false,已经确定了整个括号里的值是false,所以&&右边的b++就不再进行运算。b的值还是4
boolean b1 = (a ++ == 3 && b++ ==4);//a++表示先把a的值赋给表达式a++,a再自增,所以a++表达式的值是3,&&左边做运算的结果是true,不能确定&&结果是什么,需要对&&右边进行运算,b++是先把b的值赋给表达式b++结果为4,然后再进行自增,b为5,所以&&右边的运算结果是true,则左右两边 都是true,那么&&结果为true。
System.out.println(b1+"  "+a+"  "+b);//false true   a:4 b:5
System.out.println(b2+"  "+a+"  "+b);//false a:4  b:4
三目运算符:
x?y:z;
x:关系表达式  结果类型是boolean类型
y:值
z:值
表示x这个关系表达式的值如果为true,则把y的值赋给表达式,如果为false,则把z的值赋给表达式。
Eg:
int max = a>b?a:b;
System.out.println(max);
switch语句:
switch(表达式){
               case 值1:
               语句体1;
               break;
               case 值2:
               语句体2;
               break;
               ....
               default:
               语句体n;
               break;
}
注意事项:
1. break可以省掉,但是省掉之后case会发生穿透现象,继续执行下一个case不管下一个case是否满足他的值,直到遇到break才会跳出。
2. 表达式的值的类型与case的值的类型保持一致。
3. case的值只能是常量。
4. case的值不能重复。
5. Switch支持的数据类型:byte,short,int,char,String,enum(枚举)
6. Default可以省掉,但是不建议,一般用来处理错误值。即switch的值没有匹配到相应的case值时,才会执行default,default的break也具有穿透现象。
7. Switch的执行流程是,进去之后从上到下依次比对case值,而default无论写在什么地方都是最后没有匹配成功才会执行的。
循环语句:
For循环结构:for(初始化语句;判断条件语句;控制条件语句){
      循环体语句;
}
Eg:
int sum = 0;
for(int i = 1;i<=10;i++){//遍历1-10
        sum = sum+i;//累加
}
For循环嵌套:eg:
for(int i = 1;i<=5;i++){//控制行
        for(int j = 1;j<=6;j++){//控制列
               System.out.print("*");
        }
        System.out.println();
}
While循环:
基本格式:
while(判断条件语句) {
         循环体语句;
   }
扩展格式:
初始化语句;
   while(判断条件语句) {
         循环体语句;
         控制条件语句;
}
Do while循环:
    do {
         循环体语句;
   }while(判断条件语句);
While与do while的区别:while循环判断后才能循环,而do while不管条件如何,都会先去执行do循环语句,也就是do while至少会循环依次,而while可能一次都不循环。
跳转语句:
for(int i = 1;i<=10;i++){
        if(i == 5){
               break;//终止该层循环;(终止他所在的那一层for循环)
               //continue;//结束当次循环,并开始下一次循环(跳过i =5这一次循环,继续i=6的循环)
               //return;//结束方法
        }
        System.out.println("Hello World"+i);
}
水仙花数
 i/100%10百位
 i/10%10十位
 i%10个位

你可能感兴趣的:(java,基础,java学习)