我是靠谱客的博主 负责芒果,最近开发中收集的这篇文章主要介绍Java SE《基础篇》——(二)程序基础01,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

上章节回顾

  • Java运行机制
  • Java编码规范
  • Eclipse基本使用

章节介绍

本章开讲之前,我们先思考几个问题:
1. 我们经常看到一个项目成千上万行代码,这些代码都是形成的呢?
【答案】:都是由最简单的一个个语句按照某种流程堆积而成的。
2. 一条语句又是怎么形成的呢?
【答案】:一般由关键字、变量和运算符等组成。
3. 如果在项目中某一段功能代码需要被重复使用几遍,怎么办?我们就一遍遍的写么?
【答案】:Java中方法可以解决代码复用问题。


【介绍】
本章节主要学习程序基础,主要涉及的知识点分为三大块:变量、流程控制、方法。

标识符与关键字

标识符

  1. 释义
    标识符就是用于给程序中的变量、类、方法命名的符号。标识符可以有编程人员自由定义,但需要遵循一定的命名规则。
  2. 命名规则
    • 可以由字母、数字、下划线(_)、美元符号($)组成。
    • 必须以字母、下划线或美元符号开头,不能以数字开头。
    • 不能指定为关键字。
    • 长度没有限制,但定义时一般以见名知义为原则。
    • 使用驼峰命名,类名首名字均大写,常量全部字母大写;方法名、属性名的单词首字母小写中间的单词首字母大写。

【问】:判断以下表格中哪些标识符是合法的?

A列标识符B列标识符
tl_BigDatatl-BigData
bigData$hadoopbigData#hadoop
int2int
_test2test
bigDatabig Data

关键字

  1. 释义
    Java语言中用以特殊用途而预占用的单词或标识符称之为关键字,Java中的关键字均为小写。

  2. 关键字
classextendsimplementsinterface
packagebreakcasecontinue
doifelsefor
switchwhilefalsetrue
booleanbytecharshort
longfloatdoubletry
throwthrowsfinallyabstract
nativeprivateprotectedpublic
synchronizedtransientvolatileinstanceof
supervoidassertenum
const

除了上面表格中,goto和const为Java语言中的两个保留字。保留字是指预留的还未被使用的关键字,但可能在将来的版本中使用。

变量与常量

释义
在程序中存在大量的数据来代表程序的状态,其中有些数据在程序的运行过程中值会发生改变,有些数据在程序运行过程中值不能发生改变,这些数据在程序中分别被叫做变量常量

变量

变量是程序中最基本的存储单元,由作用域、变量类型、变量名组成。

  1. 变量的声明
    Java是强声明式语言,每个变量在使用前均要先声明。
    【声明格式】数据类型 变量名称[=值];
    【代码示例一】 int age; //只声明
    【代码示例二】 int age = 18; //直接初始化

  2. 变量分类
    变量分为局部变量、成员变量、类变量。

    • 局部变量 (本地变量)
      方法的形式参数以及在方法中定义的变量。

      【格式】 (type name = value)
      【作用范围】
         形参:在方法体中任何位置都可以访问。
         方法中定义变量:从定义处开始,直到所在代码块结束。
      【生命周期】
         出生:运行到创建变量语句时。
         死亡:超过其作用范围。

    • 成员变量 (实例变量,属性)
      成员变量就是类中的属性。当new对象的时候,每个对象都有一份属性。一个对象中的属性就是成员变量。

      【格式】 (访问修饰符 type name = value)
      【作用范围】 在类内部,任何地方都可以访问成员变量。
      【生命周期】
         出生:new对象的时候,开辟内存空间。
         死亡:堆内存地址没有引用,变成垃圾,被垃圾回收器回收后。

    • 类变量 (静态属性)
      被static修饰的属性。

      【格式】 (访问修饰符 static type name = value)
      【作用范围】 在类变量定义之后。
      【生命周期】
         出生:类加载时,类变量就分配内存空间。
         死亡:JVM退出。

【问】:演示变量分类,我们在Eclipse中新建一个学生类

学生类有一个学号属性
学生类有一个设置爱好的方法
学生类有一个学校名静态属性

常量

  • 常量也可称为字面值,即字面显示的值,其本身不会发生变化。
    【样例】
      数值型 1234 , 3.14
      字符常量 'c'
      逻辑常量值 true , false
      字符串常量 "Hello"

  • 还有一种final修饰下的变量亦称为常量。
    【格式】 final 数据类型 常量名称[=值]

常量与变量区别

* 常量在程序运行过程中其值不能改变。变量是用于存储可变数据的容器,存储一定格式的可变数据。
* 命名规范不一样。默认常量为全大写,而变量为驼峰。
* 修饰符不同。一般常量都会用final修饰。变量不会。而且,为了节省内存,常量都会同时使用static修饰。

数据类型

释义

数据类型是为了把数据分成所需内存大小不同的数据,编程的时候需要用大的数据才申请大内存,这样可以充分利用内存。
Java语言是一种强类型语言,要求所有变量先声明后使用。目的就是为了保证变量或者表达式在编译时就能够确定其类型,并为其分配相应的内存。

分类

这里写图片描述

【整型】

【Java整型】
 byte/short/int/long

【Java整型取值范围】
 Java语言整数型默认为int类型,如果要声明成long类型在变量值后加入L,如:long l = 123L

类型占用存储空间字节数数值范围
byte1-128~127
short2-2的15次方~2的15次方-1(-32768~32767)
int4-2的31次方~2的31次方-1
long8-2的63次方~2的63次方-1


【Java整型常量的三种表示方法】
 十进制;如123=1*100+2*10+3*1=123
 八进制,八进制0开头;如:013=1*8+3*1=11
 十六进制,十六进制0x开头;如:0x23=2*16+3*1=35

【进制转换】

  • 10进制到二进制
    示例:求十进制数10的二进制
    6/2=3 余 0
    3/2=1 余 1
    1/2=0 余 1
    将余数逆序输出就是6的二进制表示:110,位数不够补零
  • 二进制到十进制
    示例:求二进制110的十进制
    规则:取出最后一位,从2的0次方开始乘,将得到的结果相加即可
    0*2的0次方=0
    1*2的1次方=2
    1*2的2次方=4
    110的十进制为:0+2+4=6
  • 八进制与二进制、十进制转换类同

【浮点型】

【Java浮点型】
float/double

【两种表示形式】
十进制形式:例如:123.456 0.314
科学计数法:例如:1.23456E2 3.14E-1

【Java浮点型取值范围】
浮点声明默认是double类型,若要是float,请在尾部添加f或是F。如:float myFloat=1.23

类型占用存储空间字节数数值范围
float4-3.4E38 ~ 3.4E38
double8-1.7E308~ 1.7E308

【布尔型】

  • 适用于逻辑运算,用于程序流程控制
  • 只允许取值为true,false,不可以任何其它形式代替
  • 示例
    boolean real=true; //正确
    boolean notReal=false; //正确
    boolean read2=1; //错误
    boolean notReal2=0; //错误

【字符型】

【Java字符型】
- 通常意义上的字符,用单个引号括起来的单个字符
  如'1','a','b'等等
- Java采用Unicode编码(即为全球统一语言编码),均可以用十六进制表示编码值
  char c = 'u0012';
- 转义字符,用'n'来表示,即为转变之前的意义,但依然是个字符
  char c='n'; //表示换行符

基本类型转换

* 布尔类型不能与其它类型做任何转换
* 数值型、字符型可以相互转换,规则如下:
1)容量小的自动转换成表数范围容量大的,但byte,short,char不能相互转换,均转化成int做计算
2)容量大小排序为:byte,char,short<int<long<float<double
3)容量大转换为容量小的,要加强制转换符,此时容易丢失精度
4)多类型混合运算时,系统会自动转换成统一类型(大容量数据)后再进行计算,即先类型转换后计算

【问】:能否演示一下基本类型之间的转换
  1.演示byte,short,char运算会转成int
  2.演示大容量和小容量数据运算会先统一类型

运算符与表达式

运算符

释义
用于表示数据的运算、赋值和比较的一系列符号我们称之为运算符。

分类
运算符按功能划分如下:

运算符类型运算符
算术运算符+,-,*,/,++,–,%
关系运算符<,<=,>,>=,==,!=
布尔运算符&&, ||,&,|,!,^
位运算符&,|, ~,^,>>,>>>,<<
赋值类运算符=, +=, -=, *=, /=, %=
字符串连接运算符+
条件运算符(三目运算符)? :
其他运算符instanceof,new


【算术运算符】

类型描述示例
++ (自加运算符)++在变量前面时,先做运算后赋值
++在变量后面时,先做赋值后运算
i = 1, j; j = ++i; 则j=2;
i = 1, j; j = i++; 则 j = 1
– (自减运算符)同上i = 1, j; j = - -i; 则 j = 0;
i = 1, j; j = i- -; 则 j = 1;


【关系运算符】
  注意 ‘==’关系运算,其意义为全等,基本数据类型比较值,引用数据类型比较地址

【逻辑运算符】

* 与 &:两个操作数相与,如果都为true,则为true
* 或 |:两个操作数相或,有一个为true,则为true
* 异或 ^:相异为true,两个操作数不一样就为true,相同为false
短路&& 和 逻辑& 区别?
1.短路与,从第一个操作数推断结果,只要有一个为fase,不再计算第二个操作数
2.逻辑与,两个操作数都计算
短路|| 和 逻辑| 区别?
1.短路或,从第一个操作数推断结果,只要有一个为true,不再计算第二个操作数
2.逻辑或,两个操作数都计算

【赋值运算符】
注意
1.当 "=" 两侧数据类型不一致时,适用默认转换或强制转换处理,如long num=20;int i=(int)num;
2.特殊情况为:当byte,char,short被整赋值时,不需要进行强制类型转换,不超过取值范围即可。即一个自动装载的过程。
    char c=100;byte b=20; //正确
    char c2=-99999;byte b2=128; //类型越界错误

运算符用法c
+=a+=ba=a+b
-=a-=ba=a-b
*=a*=ba=a*b
/=a/=ba=a/b
%=a%=ba=a%b


【字符串连接运算符】

* "+" 可用于数值计算,当有一方是字符时,则为将左右两个数据转化成字符串连在一起。如int i=10+20;String j="10"+"20"
* 当" +" 任意一侧为字符串时,系统将自动将两侧转化成字符串,做字符串链接操作。
* 当进行System.out.println(var)打印操作的时候,均自动转化为字符串进行输出

【运算优先级】

优先级运算符分类结合顺序运算符
由高到低分隔符左结合. [] ( ) ; ,
一元运算符右结合! ++ – - ~
算术运算符
移位运算符
左结合* / % + - << >> >>>
关系运算符左结合< > <= >= instanceof == !=
逻辑运算符左结合! && || ~ & | ^
三目运算符右结合布尔表达式?表达式1:表达式2
赋值运算符右结合= *= /= %= += -= <<= >>= >>>= &= *= |=


【问】:做一道综合性强点的练习题,感受感受运算符优先级怎么样?

  int a = 5;
  int b = 4;
  int c = a++ - --b * ++a / b-- >> 2 % a--;
  c的值是多少?

表达式

表达式是指由(常量、变量、操作数)与运算符所组合而成的语句。

* 符合语法规则的运算符+操作数,即为表达式,如:5+3,2.0+3.0,a+b,3%2
* 表达式最终运行结果即为表达式的值,值的类型就是表达式的类型
* 运算符优先级,决定表达式的运算顺序
* 三目运算符:
形如:x?y:z
释义:计算x的值,若为true,则表达式的值为y;若为false,则表达式的值为z
示例: int score=70;
String result=score<60 ? "不及格" : "及格";
System.out.println(result); //输出结果为及格

最后

以上就是负责芒果为你收集整理的Java SE《基础篇》——(二)程序基础01的全部内容,希望文章能够帮你解决Java SE《基础篇》——(二)程序基础01所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部