Java-Python-Django社区程序员

【JavaSE(一)】Java语法基础(上)

2018-05-09  本文已影响137人  苍云横渡

原文地址:https://www.cloudcrossing.xyz/post/33/

1 JDK,JRE,JVM的作用及关系

(1)作用

(2)关系


2 第一个程序:HelloWorld案例

class Helloworld {
    public static void main(String[] agrs){
        System.out.println("Hello world!");
    }
}
运行结果:
Hello world!

程序解释:

编译执行程序:


3 标识符和关键字

标识符就是给程序中的变量、类、接口、方法等命名的字符序列。

组成规则:

常见的命名规则:

关键字是被Java语言赋予特定含义的单词。其全部小写。(注意:goto和const作为保留字存在)


4 注释

注释就是对程序进行解释说明的文字。

分类:

注释的作用:


5 变量与常量

变量是在程序的执行过程中,其值在某个范围内可以发生改变的量。

其变量的定义格式:

常量就是在程序执行过程中,其值不发生改变的量。分为字面值常量以及自定义常量(后面讲)

字面值常量:

在Java中针对整数常量提供了四种表现形式:


6 进制转换与原码反码补码

(1)其他进制到十进制

(2)十进制到其他进制

(3)进制转换的快速转换法

(4)原码反码补码


7 数据类型

Java是一种强类型语言,针对每种数据都提供了对应的数据类型。

  • 所有的变量必须先声明后使用
  • 指定类型的变量只能接受类型与之匹配的值

分类:

基本数据类型:

注意:


8 数据类型转换

(1)布尔类型不参与数据类型转换

(2)默认转换

(3)强制转换

举个例子:


9 运算符

9.1 算术运算符

++和--的用法:

9.2 赋值运算符

其包含=,+=,-=,*=,/=,%=等。=为基本的赋值运算符,其他的为扩展的赋值运算符。

扩展的赋值运算符隐含了自动强制转换:

9.3 比较运算符

比较运算符的结果为布尔类型,即true或者false。

9.4 逻辑运算符

逻辑运算符用于连接布尔类型的表达式。

9.5 位运算符

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

PS:面试题:请用最有效率的方式写出计算3乘以4的结果? 答案是 3 << 2

class Demo {
    public static void main(String[] args) {
        //<< 把<<左边的数据乘以2的移动次幂
        System.out.println(3 << 2); //3*2^2 = 3*4 = 12;
    
        //>> 把>>左边的数据除以2的移动次幂
        System.out.println(24 >> 2); //24 / 2^2 = 24 / 4 = 6
        System.out.println(24 >>> 2);
        
        System.out.println(-24 >> 2); 
        System.out.println(-24 >>> 2);
    }
}
计算出3的二进制:11,然后左移两位,左边最高位丢弃,右边补齐0
      00000000 00000000 00000000 00000011
(00)000000 00000000 00000000 0000001100
        
>>的移动:  
计算出24的二进制:11000
原码:10000000 00000000 00000000 00011000
反码:11111111 11111111 11111111 11100111
补码:11111111 11111111 11111111 11101000
右移两位,最高位是0,左边补齐0;最高为是1,左边补齐1
    11111111 11111111 11111111 11101000
        11111111 11111111 11111111 111010(00) 补码
    1111111111 11111111 11111111 111010(00) 补齐后的补码
补码:1111111111 11111111 11111111 111010
反码:1111111111 11111111 11111111 111001
原码:1000000000 00000000 00000000 000110
结果:-6
        
>>>的移动:
计算出24的二进制:11000
原码:10000000 00000000 00000000 00011000
反码:11111111 11111111 11111111 11100111
补码:11111111 11111111 11111111 11101000
无论最高位是0还是1,左边补齐0
    11111111 11111111 11111111 11101000
    0011111111 11111111 11111111 111010(00)
结果:1073741818
3的二进制:11
00000000 00000000 00000000 00000011
4的二进制:100
00000000 00000000 00000000 00000100
    
&位与运算:有0则0。
   00000000 00000000 00000000 00000011
&00000000 00000000 00000000 00000100
   ---------------------------------------------
   00000000 00000000 00000000 00000000
   结果是:0
        
|位或运算:有1则1。
   00000000 00000000 00000000 00000011
 | 00000000 00000000 00000000 00000100
   ---------------------------------------------
   00000000 00000000 00000000 00000111
   结果是:7
        
^位异或运算:相同则0,不同则1。
   00000000 00000000 00000000 00000011
&00000000 00000000 00000000 00000100
   ---------------------------------------------
   00000000 00000000 00000000 00000111
   结果是:7
        
~按位取反运算符:0变1,1变0
   00000000 00000000 00000000 00000011
~11111111 11111111 11111111 11111100 (补码) 
   补码:11111111 11111111 11111111 11111100
   反码:11111111 11111111 11111111 11111011
   原码:10000000 00000000 00000000 00000100
   结果是:-4

^的特殊用法:一个数据针对另一个数据位异或两次,该数不变

PS:面试题:请自己实现两个整数变量的交换

方式1:使用第三方变量(开发中用的)

int c = a;
a = b;
b = c;

方式2:用位异或实现(面试用)

//左边:a,b,a
//右边:a ^ b
a = a ^ b;
b = a ^ b;   //a ^ b ^ b = a
a = a ^ b;   //a ^ b ^ a = b

方式3:用变量相加的做法

a = a + b;    //a=30
b = a - b;    //b=10
a = a - b;    //a=20

方式4:一句话搞定

b = (a+b) - (a=b);    //b=30-20=10,a=20

9.6 三元运算符

格式:比较表达式?表达式1:表达式2;

首先计算比较表达式的值,看是true还是false。如果是true,表达式1就是结果。如果是false,表达式2就是结果。

举个例子,求三个数最大值:max = (a > b)? ((a > c)? a: c): ((b > c)? b: c);


10 键盘录入

步骤:

import java.util.Scanner
class ScannerDemo {
    public static void main(String[] args) {
        //创建键盘录入数据对象
        Scanner sc = new Scanner(System.in);
        
        System.out.println("请你输入一个数据:");
        int x = sc.nextInt();
        
        System.out.println("你输入的数据是:"+x);
    }
}

后续详细补充其他类型。


11 流程控制语句

11.1 顺序结构

按照代码的先后顺序,从上往下,依次执行。

class Demo {
    public static void main(String[] args) {
        System.out.println("程序开始了");
        
        System.out.println("我爱Java");
        
        System.out.println("程序结束了");
    }
}
//运行结果:
程序开始了
我爱Java
程序结束了

11.2 选择结构-if语句

其有三种格式:

格式1:

if (比较表达式) {
    语句体;
}

执行流程:

格式2:

if (比较表达式) {
    语句体1;
}else {
    语句体2;
}

执行流程:

格式2:

if(比较表达式1) {
    语句体1;
}else if (比较表达式2){
    语句体2;
}
...
else {
    语句体n+1;
}

执行流程:

注意:

11.3 选择结构-switch语句

格式:

switch(表达式) {
    case 值1:
        语句体1;
        break;
    case 值2:
        语句体2;
        break;
    ...
    default:
        语句体n+1;
        break;
}

格式解释说明:

执行流程:

注意事项:

11.3 循环语句-for语句

格式:

for (初始化语句;判断条件语句;控制条件语句){
    循环体语句;
}

执行流程:

11.4 循环语句-while语句

格式:

while(判断条件语句) {
    循环体语句;
}

或

初始化语句;
while(判断条件语句){
    循环体语句;
    控制条件语句;
}

while循环可以和for循环等价转换。

for和while的区别:

11.5 循环语句-do...while语句

格式:

do {
    循环体语句;
}while(判断条件语句);

或

初始化语句;
do {
    循环体语句;
    控制条件语句;
}while(判断条件语句);

while循环可以和for循环等价转换。

三种循环的区别:

11.6 控制跳转语句

(1)break:中断的意思

class BreakDemo {
    public static void main(String[] args) {
        //跳出单层循环
        for(int x=0; x<10; x++) {
            if(x == 3) {
                break;
            }
            System.out.println("HelloWorld");
        }
        
        System.out.println("over");
        System.out.println("-------------");
        
        wc:for(int x=0; x<3; x++) {
            nc:for(int y=0; y<4; y++) {
                if(y == 2) {
                    //break nc;
                    break wc;
                }
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

(2)continue:继续

(3)return:返回

return关键字不是为了跳转出循环体,更常用的功能是结束一个方法,也就是退出一个方法。跳转到上层调用的方法。这个在方法的使用那里会在详细的讲解。

上一篇下一篇

猜你喜欢

热点阅读