JavaSE之入门语法(常量变量运算符流程控制结构)

 

一、安装注意

  1. 安装路径中不要有中文,所有Java开发工具安装目录最好统一。
  2. 各安装目录含义
    目录名称用途
    binJDK的各种命令,比如javac java
    conf相关配置文件
    include与平台相关的头文件
    jmods各种模块
    legal各模块的授权文档
    libJDK工具补充jar包

     

  3. 配置path路径后,要重新打开命令提示符窗口才能生效。

  4. Java通过编写代码->编译代码->运行程序三个步骤

二、SE基本语法

(一)注释(在程序指定位置添加的说明信息,不参与程序执行)

  1.单行注释

// 注释内容

  2.多行注释

/* 
  注释内容

  。。。

  注释内容
 */

  3.文档注释

/**

   注释内容

*/

(二)关键字(被赋予特定含义的单词)

  • 关键字字母全部是小写
  • 代码编辑器对关键字通常有特殊的颜色标记
  • java关键字有50个左右(public class static void true false null .....)

(三)常量(程序中不允许修改)

  • 字符串常量:双引号括起来的内容,如"HelloWorld"
  • 整数常量:不带小数的数字,如123,234,321
  • 小数常量:带小数的数字,如12.34 123.4
  • 字符常量:单引号括起来的内容,'a'
  • 布尔值常量:真假常量
  • 空常量:null,空常量不能直接输出

(四)基本数据类型

 java是强类型语言,每种数据都有明确的数据类型,不同数据类型分配的内存空间大小不同。java的数据类型分为基本数据类型和引用数据类型(类、接口、数组)。

整数(byte short int long)

  • byte:占1字节,取值范围:-128~127
  • short:占2字节,取值范围:-32768~32767
  • int(默认):占4字节,取值范围:-2^31~2^31-1
  • long:占8字节,取值范围:-2^63~2^63-1

浮点数(float double)

  • float:占4字节,取值范围:负数:-3.402823E+38 ~ -1.401298E-324 正数:1.401298E-45~3.402823E+38
  • double(默认):占8字节,取值范围:负数:-1.797693E+308~-4.9000000E-324 正数:4.9000000E-324~1.797693E+308

字符(char)

  • char:占2个字节,取值范围:0~65535

布尔(boolean)

  • boolean:占1个字节,取值范围:true false
  • 注意事项:1.字符串不是基本类型,而是引用类型。
                      2. 浮点型可能只是一个近似值,并非精确的值。
                      3. 数据范围与字节数不一定相关,例如float数据范围比long更加广泛,但是float是4字节,long是8字节。
                      4. 浮点数当中默认类型是double。如果一定要使用float类型,需要加上一个后缀F。
                          如果是整数,默认为int类型,如果一定要使用long类型,需要加上一个后缀L。推荐使用大写字母后缀。

(五)变量

程序运行中可以改变的量,本质上是内存中的一小块区域。

变量的定义:变量类型 变量名 = 变量值

如:int a = 1;

变量的修改:变量名 = 新值

long l = 10000000000;//会报错
long l = 10000000000L;//不会报错
//因为给出的整数默认是int类型
//同理,float类型的变量后面要加F
float f = 13.14F

(六)标识符

  • 给类、方法、变量等起名字的符号
  • 由数字、字母、下划线以及$组成
  • 数字不能作为标识符开头
  • 标识符不能是关键字
  • 区分大小写
  • 约定:小驼峰命名法,针对方法、变量命名使用(标识符是一个单词时,该单词首字母大写,如Age;标识符有多个单词时,第一个单词首字母小写,其余单词首字母大写,如newAge)。大驼峰命名法,针对类使用(标识符是一个单词时,该单词首字母大写,如Student;标识符有多个单词时,所有单词首字母大写,如GoodStudent)

(七)类型转换

自动类型转换(隐式转换,把一个表示数据范围小的数值或变量赋值给另一个表示范围大的变量,这与数据类型所用的字节数无关,就比如将小瓶子里的水倒到大瓶子里面不会出错一样)

  • byte->short(char)->int->long->float->double
  • byte和short不能直接转换为char
  • boolean是非数值类型,不参与类型转换

强制类型转换(显式转换,把一个表示数据范围大的数值或变量赋值给另一个表示范围小的变量,这种转换也称为缩小转换 Narrow Conversion)

  • 格式:目标数据类型 变量名 = (目标数据类型)值或变量
  • 不建议做强制类型转换,会出现精度丢失。

   注意事项:

  1. 强制类型转换有可能发生精度丢失、数据溢出的问题。
  2. byte/short/char这三种类型都可以发生数学运算,这三种类型在运算时,都会被首先提升成为int类型,然后再计算。哪怕操作的两个数类型相同,也会先提升为int类型,然后再进行计算。比如byte+byte相加也会都提升为int,然后相加,得出int类型的结果。
  3. boolean类型不能发生数据类型转换。
  4. 对于byte/short/char三种类型而言,如果右侧赋值的数值没有超过范围,那么javac编译器会自动隐含地补上一个(byte)(short)(char)实现强转。
  5. short a = 5;
    short b = 8;
    short result = a + b;//报错,a+b得到的还是int类型
    short result = 5 + 8;//等号右边全都是常量,没有任何变量参与运算,编译之后,得到的.class文件字节码文件当中相当于(直接就是):short result = 13; 右侧常量范围没有操作左侧范围,所以正确,这是“编译器的常量优化”,一旦表达式当中有变量参与,那么就不能进行这种优化了。

(八)运算符

  • 运算符:进行特定操作的符号。
  • 算数运算符:+(加)    -(减)     *(乘)    /(除)    %(取余)   除法得到的商(整数相除只能得到整数,要想得到小数,必须要有浮点数的参与运算),取余得到余数。
  • 类型的自动提升:提升规则:整个表达式的类型会自动提升到表达式中最高等级操作数相同的类型(等级顺序:byte,short,char->int->long->float->double)。整数与字符相加,会根据ASCII表将字符转换为int类型的数值。一旦运算当中有不同类型的数据,那么结果将会是数据类型范围大的那种。
    int a = 10 + 13.14;//会报错
    double a = 10 + 13.14; //不会报错

     

  • 字符串的“+”操作:此时的“+”是将字符串连接符,就是将字符串相互首尾拼接,如"abc" +123 = "abc123"。在“+”操作符的左右两边只要出现字符串,此时“+”就是字符串连接符。当连续进行“+”操作时,从左往右,依次执行。
    “abc”+123+1; // abc1231
     
    123+1+"abc"; // 124abc

     

  • 赋值运算符:=   ,扩展的赋值运算符:+=(加等于,把左边和右边的数据做加法操作,并把结果赋值给左边)

    short i = 10;
    i += 20; //不报错,扩展的赋值运算符底层包含了数据类型转换。
    //上式包含了i=i+20(short + int )=>+号两边变量类型均提升为int(int+int)=>得出int的计算结果=>自动调用类型强制转换,转为short类型。
    i = i + 20;//报错,因为20为int类型,i为short类型

    除了+=,扩展的赋值运算符还有-=、*=、/=、%=

  • 自增自减运算符:++(变量值加1)、--(变量值减1)。

    int i = 10;
    //单独使用
    i++; // i=11
    ++i; // i=12
    //参与操作使用
    int j = i++; //j=11
    int k = ++i;//k=12

    ++和--既可以放在变量后面,也可以放在变量前面,单独使用时,放在前面和放在后面效果一样。参与操作使用时,++或--若放在变量右边,则是先将变量参与操作,最后执行++或--的操作。若放在变量左边,则是先进行++或--操作,将加1或减1后的变量参与操作。最常见的用法都是单独使用。

  • 关系运算符: ==(等于) !=(不等于) >(大于) >=(大于等于) <(小于) <=(小于等于),成立为true,不成立为false。

  • 基本逻辑运算符:逻辑与(&,有false则false)、逻辑非(!)、逻辑或(|,有true则true)、逻辑异或(^,相同为false,不同为true)

  • 短路逻辑运算符:逻辑与(&&)、逻辑或(||)。作用与基本运算符一样,但其与基本逻辑运算符的区别为:

    int i = 10;
    int j = 20;
    (i++>100) & (j++>100) //此时i=11 j=21
    (i++>100) && (j++>100) //此时i=12 j=21

    即对于短路与运算&&,只要左边逻辑值为false,则不再计算右边表达式的逻辑值。同理,对于短路或运算||,只要左边表达式逻辑值为true,则不再计算右边表达式的逻辑值。即具有短路效果。基本运算符始终都要计算左边和右边表达式的值。

  • 三元运算符 格式:关系表达式 ? 表达式1 : 表达式2。计算方法:关系表达式的值为true,表达式1的值为运算结果;关系表达式的值为false,表达式2的值为运算结果。表达式1的值和表达式2的值应满足等号左边的数据类型要求。int result = 3 > 4? 2.5:10(错误写法)。三元运算符使用结果一定要被使用,要么作为等号左右值,要么被使用。

(九)数据输入

//导包
import java.util.Scanner;
//创建对象
Scanner sc = new Scanner(System.in);
//接收数据
int i = sc.nextInt();

(十)ASCII码表与Unicode码表

  • ASCII码表:American Standard Code for Information Interchange 美国标准信息交换码
  • Unicode码表: 万国码。也是数字和符号的对照关系,开头0-127部分和ASCII完全一样,但是从128开始包含有更多的字符(包括Emoji表情也有)
  • ‘0’-48    ‘A'-65    ’a'-97

(十一)分支语句

    1.流程控制语句

  • 顺序结构
  • 分支结构(if,switch)
  • 循环结构(for,while,do...while...)

    2.分支结构

     (1)if 语句

        结构1:if (关系表达式) {

                          语句体;

                    }

        结构2(二者选其一):if (关系表达式) {

                          语句体;

                    }else {

                          语句体;

                    }

         结构3:if (关系表达式1) {

                          语句体1;

                    }else if (关系表达式2){

                          语句体2;

                    }

                    ... ...

                    else {

                          语句体 n+1;

                    }

        (2)switch语句

          结构:switch(表达式) {

                         case 值1:

                                        语句体1;

                                        break;

                         case 值2:

                                        语句体1;

                                        break;

                                        ... ...

                          default:

                                        语句体n+1;

                                        [break;]

                     }

          notes:

         表达式:取值为byte,short,int,char,JDK5以后可以是枚举,JDK7以后可以是String。从满足条件的case开始向下执行,直到遇到break或者switch语句整体结束。default表示所有情况都不匹配时执行。switch语句中的break一定要加,如果不加,switch语句会从满足条件的值开始,一直向下不判断case值直接执行语句,直到遇到break或程序执行结束,即case穿透。

        3.循环语句

      循环结构的基本组成部分:

  1. 初始化条件:在循环开始最初执行,且整个循环过程中只执行一次。
  2. 条件判断:若条件成立循环继续,条件不成立则循环退出。
  3. 循环体:重复要做的事情。
  4. 步进语句:每次循环之后要做的扫尾工作。

    (1)for语句

               结构:for(初始化语句;条件判断语句;条件控制语句){ 

                                循环体语句;

 

                         }

        (2)while语句

               结构:while (条件判断语句) {

                               循环体语句;

                               条件控制语句;

                          }

        (3)do ... while语句

               结构:do {

                               循环体语句;

                               条件控制语句;

                          } while (条件判断语句);

        (4)三种循环的区别

               for与while先判断条件,do...while语句先执行一次循环体。 

       4.跳转控制语句(continue;break;)

        (1)continue:用于循环中,基于条件控制,跳过某次循环内容的执行,继续下一次执行。

        (2)break:用在循环中,基于条件控制,终止循环体内容的执行,也就是说结束当前整个循环体。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值