概述
上章节回顾
- Java运行机制
- Java编码规范
- Eclipse基本使用
章节介绍
本章开讲之前,我们先思考几个问题:
1. 我们经常看到一个项目成千上万行代码,这些代码都是形成的呢?
【答案】:都是由最简单的一个个语句按照某种流程堆积而成的。
2. 一条语句又是怎么形成的呢?
【答案】:一般由关键字、变量和运算符等组成。
3. 如果在项目中某一段功能代码需要被重复使用几遍,怎么办?我们就一遍遍的写么?
【答案】:Java中方法可以解决代码复用问题。
【介绍】
本章节主要学习程序基础,主要涉及的知识点分为三大块:变量、流程控制、方法。
标识符与关键字
标识符
- 释义
标识符就是用于给程序中的变量、类、方法命名的符号。标识符可以有编程人员自由定义,但需要遵循一定的命名规则。- 命名规则
- 可以由字母、数字、下划线(_)、美元符号($)组成。
- 必须以字母、下划线或美元符号开头,不能以数字开头。
- 不能指定为关键字。
- 长度没有限制,但定义时一般以见名知义为原则。
- 使用驼峰命名,类名首名字均大写,常量全部字母大写;方法名、属性名的单词首字母小写中间的单词首字母大写。
【问】:判断以下表格中哪些标识符是合法的?
A列标识符 B列标识符 tl_BigData tl-BigData bigData$hadoop bigData#hadoop int2 int _test 2test bigData big Data
关键字
- 释义
Java语言中用以特殊用途而预占用的单词或标识符称之为关键字,Java中的关键字均为小写。
- 关键字
class extends implements interface package break case continue do if else for switch while false true boolean byte char short long float double try throw throws finally abstract native private protected public synchronized transient volatile instanceof super void assert enum const
除了上面表格中,goto和const为Java语言中的两个保留字。保留字是指预留的还未被使用的关键字,但可能在将来的版本中使用。
变量与常量
释义
在程序中存在大量的数据来代表程序的状态,其中有些数据在程序的运行过程中值会发生改变,有些数据在程序运行过程中值不能发生改变,这些数据在程序中分别被叫做变量和常量。
变量
变量是程序中最基本的存储单元,由作用域、变量类型、变量名组成。
变量的声明
Java是强声明式语言,每个变量在使用前均要先声明。
【声明格式】数据类型 变量名称[=值];
【代码示例一】 int age; //只声明
【代码示例二】 int age = 18; //直接初始化
变量分类
变量分为局部变量、成员变量、类变量。
局部变量 (本地变量)
方法的形式参数以及在方法中定义的变量。
【格式】 (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
类型 占用存储空间字节数 数值范围 byte 1 -128~127 short 2 -2的15次方~2的15次方-1(-32768~32767) int 4 -2的31次方~2的31次方-1 long 8 -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
类型 占用存储空间字节数 数值范围 float 4 -3.4E38 ~ 3.4E38 double 8 -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+=b a=a+b -= a-=b a=a-b *= a*=b a=a*b /= a/=b a=a/b %= a%=b a=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所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复