【Java零基础】Java初学者走向大师之路(2)
Java标识符
标识符用来表示变量、方法或类等的名字。
定义的规则如下:
- 只能包含字母、数字、下划线和美元符号$。
- 不能以数字开头
- 严格区分大小写,如 a 和 A 是不同的标识符
- 没有长度限制
注意:标识符的命名应该有自明性(见名知意),看到名字就可以知道这个标识符表示的内容。
下面是一些合法的标识符(名称):
myName,My_name,Points,$points,_sys_ta,OK,_23b,_3_
以下是一些非法的标识符:
2thupk,high-dig,Not/ok,#name
使用标识符进行命名的时候,我们会遵循下面的定义风格:
- 变量名:第一个单词的字母小写,后面每个单词的首字母大写。如person,personName。
- 方法名:第一个单词首字母小写,后面每个单词的首字母大写。如eat(),showName()。
- 类名:以大写字母开头。如Home,Hello。
- 常量:全部大写。如PI,NUMBER。
注意:定义风格与语法没有关系,但是一个优秀的程序员都会按照这个要求规范自己的代码。
关键字和保留字
正确识别Java语言的关键字(keyword)和保留字(reserved word)是十分重要的。
Java的关键字对Java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等。
保留字是java预留的关键字,他们虽然现在没有作为关键字,但在以后的升级版本中有可能作为关键字。
所以我们在等一标识符的时候,不能与它们冲突,否则代码不能正常执行。
目前的保留字:const,goto
关键字如下:
分隔符
空格、圆括号、花括号、分号等。
每条语句无论一行还是多行都以分号结束。
代码块(Block)是包含在{}里面的多条语句,块可以嵌套。
空白由一个或多个空格组成,也可以由一个或多个tab空格组成。
注释
Java支持单行及多行注释,注释中的内容会被编译器忽略。
单行注释:以换行符结束。语法:
//......
多行注释:可同时注释很多内容。语法:
/*............*/
文档注释:可使用javadoc工具从源代码和文档注释中将信息取出,转换为HTML文件。语法:
/**
..........
..........
*/
Java数据类型划分
基本数据类型
变量和常量
变量:用于标识数据的存储单元,可用于数据存储和运算。各种类型的变量创建后都有默认值。
变量的定义一般格式如下:
<数据类型><变量标识符>=<值>;
double x = 3.1415;
变量赋值后可以修改,格式如下:
<变量标识符>=<值>;
x = 1.2345;
注意:在Java中,所有的变量在使用之前必须声明。
常量有字面量和符号量两种。
字面量表示基本数据类型的源代码,如整型字面量:6
符号常量指用标识符表示的常量。
定义的一般格式如下:
<final><数据类型><符号常量标识符>=<常量值>;
例如:
final double PI = 3.1415926;final int COUNT=1000;
注意:常量一旦赋值不能修改。
实型数据
实型常量
用十进制数形式表示,由数字和小数点组成,例如:3.25。
用科学计数法形式表示,例如:123E-3。
数后加f或F为float,加d或D为double,没有后缀修饰的则缺省为double类型。
实型变量
实型变量按长度分为:float和double。
双精度浮点型double比单精度浮点型float的精度更高,表示的数据的范围更大。
三个特殊浮点值
正无穷大:Double.POSITIVE_INFINITY
负无穷大:Double.NEGATIVE_INFINITY
非数字:Double.NaN
注意:Double.NaN=Double.NaN的值为true。
字符型数据
字符常量是单引号括起来的一个字符,如:'J'、'*'。
Java中有以反斜杠(\)开头的字符,反斜杠将其后的字符转变为另外的含义,称为转义字符。
Java中的字符型数据是16位的Unicode字符,汉子和英文字母占的内存空间相同。
"Java你好"共12个字节。
字符变量的定义如下:
char ch=‘c’;
字符串常量数据
字符串常量是使用双引号括起来的字符序列。
例如:
"Let's learn Java!";String str = "Hello world";
字符串变量作为对象来处理,通过String和StringBuffer类的构造方法来定义。
String s = new String();
布尔型数据
布尔型常量值只有:true和false。
布尔型变量为boolean类型,取值为true和false。例如:
boolean b =true;
类型转换
自动类型转换:低优先级的数据自动会转换为高优先级的数据
byte->short->char->int->long->float->double
强制类型转换:优先级高的数据转换成优先级低的数据。例如:
double d =3.14159d;int a=(int)d;
如果下列两个条件都满足,那么将一种类型的数据赋给另一种类型变量时,讲执行自动类型转换。
- 两种类型兼容
- 目标数据类型的取值范围比源数据类型的取值范围大
当满足以上两个条件时,自动的“加宽转换”就可以进行。
例如:将一个byte值赋给int类型的变量
byte a =10;
int x =a;
对于加宽转换,数字类型,包括整数和浮点类型都是彼此兼容的,但是数字类型和字符类型或布尔类型是不兼容的。字符类型和布尔类型也是互相不兼容的。
当需要将int型的值赋给一个byte型的变量时该怎么办?
此时,只有采用被称为“变窄转换”的转换方式。因为你肯定要将源数据的值变小才能适合目标数据类型。
在这种情况下,就必须进行强制类型转换。所谓的强制类型转换是一种显示的类型变换方式,其通用格式:(target-type) value
其中,目标类型(target-type)制定了要将指定值所转换成的类型。
例如,下面的程序段将int型强行转换成byte型。
int a;
byte b;
b = (byte)a;
当把一个浮点值赋给整数类型时,将发生一种不同的类型转换:截断
即当把浮点值赋给整数类型时,它的小数部分将被舍去。
例如,如果将值1.23赋给一个整数,其结果只是1,0.23被舍弃。
当然,如果浮点值太大而不能适合目标整数类型,那么它的值将会因为目标类型值域取模而减少。
下面的这个程序说明了强制类型转换过程。
public class Conversion {public static void main(String args[]){byte b;int i = 258;double d = 338.136;System.out.println(“\n将int类型数据转换为byte");b = (byte) i;System.out.println("i and b: " + i + “, " + b);System.out.println(“\n将double类型数据转换为int");i = (int) d;System.out.println("d and i :" + d + " ," + i);System.out.println(“\n将double类型数据转换为byte");b = (byte) d;System.out.println("d and b: " + d + “, " + b);}
}
运行结果如下:
将int类型数据转换为byte
i and b: 258, 2
将double类型数据转换为int
d andi: 338.136 ,338
将double类型数据转换为byte
d and b :338.136, 82
下面让我们分析一下每个类型转换。
当值258被强制转换为byte变量时,取值它的低八位;
当把变量d转换为int型,它的小数部分被舍弃了;
当把变量d转换为byte型,它的小数部分被舍弃了,也是取它的低八位。
赋值运算符
包括:=,+=,-=,*=,/=,%=
int a=2;a =a*b;a*=b;a%b=b;a =a%b;
算术运算符
包括:+,-,*,/,%,++,--等
后缀++(--):变量首先进行操作再自身进行加减。
int a=2;int b =a++;//a=3,b=2
前缀++(--):变量首先加减后再进行操作。
int a=2;int b=++a;//a=3,b=3
关系运算符
包括:==,!=,<,<=,>,>=
完成操作数的比较运算,结果为布尔类型值。
int a=10;int b=3;boolean f=a>b;//比较a和b的值,结果为true,即f的值为true
逻辑运算符
包括:&,|,!,^,&&,||
注意区别:&既是位运算符也是逻辑运算符,&&只是逻辑运算符,&与&&同时作为逻辑运算符时&&是短路的(截断功能),而&并不短路。
int a=6;int b=8;int c=10;int d=12;boolean x=++a>b++&&c++>d--;//上面代码的结果:
//a=7 b=9 c=10 d=12 x=flase
条件运算符
也称作三目运算符
一般形式为:
<表达式1>?<表达式2>:<表达式3>;
表达式1的数据类型为布尔值类型,如果为true,取表达式2的值为最终结果,否则取表达式3的值。
- 按位取反〜,〜01010101=10101010。 (1变0 0变1)
- 按位与&,11111001&10001111=10001001。 (同为1时为1 )
- 按位或|,11111001|10001111=11111111。 (只要有一个为1就为1)
- 按位异或^,11111001^10001111=01110110。 (相同为0 不同为1)
- 左移<<,10101011<<2=10101100。
- 带符号右移>>,10101011>>2=11101010。
- 无符号右移>>>
表达式
由操作数和运算符按照一定的语法格式组成表达式。
(a+b)*(c--d)
变量的作用域
- 所谓的作用域就是在变量在什么时候是可见在什么是不可见的!
- 作用域决定变量“可见性”与“存在时间”
- 作用域的范围:只作用于从声明开始到所在的{}结束。
简单的输入输出
输出:
使用System.out对象进行输出。
println():输出文本并换行
print():输出文本不换行
如:System.out.println(“hello world!”);
输入:
1、使用Scanner对象输入。
new Scanner(System.in)
import java.util.Scanner与next()或nextInt()方法
2、使用命令行参数main()方法的args[]。
【Java零基础】Java初学者走向大师之路(2)相关推荐
- 最适合Java初学者学习的Java零基础入门教程
各种各样的编程语言不断崛起,但唯有Java是牢牢占据着老大的位置,目前几乎90%以上的大中型互联网应用系统在服务器端开发首选Java. 因此,也是吸引了不少年轻人投入到Java的学习之中. 所以,今天 ...
- Java零基础学习难吗
java编程是入行互联网的小伙伴们大多数的选择,那么对于零基础的小伙伴来说Java零基础学习难吗?如果你是初学者,你可以很好的理解java编程语言.并不困难.如果你的学习能力比较高,那么你对Java的 ...
- B站百万播放量Java零基础教程视频(适合Java 0基础,Java初学入门),史上最细Java零基础教学视频
是否还在为学习Java如何入门而烦恼? 是否还在为Java软件如何安装而烦恼? 是否还在找寻着适合零基础的Java视频教程? 动力节点教学总监老杜159集课堂实录Java零基础视频教程,从初学者角度出 ...
- Java零基础学习Java编程语言基础知…
很多Java编程初学者在刚接触Java语言程序的时候,不知道该学习掌握哪些必要的基础知识.下面就说说Java零基础学习Java编程语言基础知识的几个要点.希望能够对Java编程基础入门学习的新手有帮助 ...
- 尚硅谷Java零基础极速入门七天版笔记
Java零基础极速入门 文章目录 Java零基础极速入门 1 Java快速入门 1.1计算机语言 1.2 Java语言 1.3 JVM 1.4 环境配置 2 基础语法 2.1 变量 2.2 标识符 2 ...
- Java编程入门先学什么?Java零基础学习路线分享!
Java作为一种对初学者非常友好的编程语言,小源十分推荐大家学习.一是Java开发岗位比较多,二是对于从业者的知识结构门槛不高,非计算机专业出身,只要是本科学历,从好程序员学Java后也有非常多机会从 ...
- 零基础java自学流程-Java语言高级577
HTTP Request header 使用Fiddler 能很方便的查看Reques header, 点击Inspectors tab ->Request tab-> headers ...
- Java零基础小白的福利来了!!高淇老师带你飞~
经过一年时间的沉淀,高淇老师终于带着他的Java300集走来啦!!简直就是新手小白入门编程的福音,内容讲解细致,画面丰富. 课件所有图形做了重新绘制和配色,图解学习Java,让学习成为一种享受 本套教 ...
- java游戏项目分享,适合的零基础java项目,提高你的代码能力
来了,来了 !!! 你们想要的游戏项目,给你们整理好了!!! (坦克大战.俄罗斯方块.飞机大战.贪吃蛇游戏.黄金矿工.桌球游戏.尚医疗) java基础(必学) 小白入门到精通>>> ...
- 授人予鱼不如授人予渔:零基础java学习路线分享
一切不以求职找工作为目标的学习路线分享都是耍流氓. 博主是19年7月毕业的应届生:985.A+学科硕士.2018年的秋招收获了:百度.腾讯.头条.美团.猿辅导.度小满.猫眼.流利说等offer.off ...
最新文章
- 我和AI打了六局王者荣耀,心态崩了
- MySQL的数据存储方式的概述
- [导入]ASP.NET中上传并读取Excel文件数据
- ssm框架里面前端拿HTML写,ssm框架引入Vue,声明式渲染,标签的href拼接字符串
- 十分钟搞定特征值和特征向量
- 炸裂!万字长文拿下HTTP!
- 女人最想从男人那里得到什么?
- Ruby on Rails,创建模型,附赠模型与表名不一致时的解决方法
- 万年历插件软件测试,中华万年历app测试用例.xls
- 苹果自带相册打马赛克_一键消除“马赛克”,这个软件太牛了,网友:我有一个大胆的想法...
- SRE工作手册——基础
- 《人性的枷锁》读后感范文4500字
- isfinite函数_isfinite()函数以及C ++中的示例
- SQL零基础入门学习(一)
- 倒角距离(Chamfer distance)
- Chango的数学Shader世界(十四)细线间断,发光闪烁,TAA削弱处理
- springBoot的shiro的简单项目部署
- 实验室工作站配置多用户远程连接教程(亲测有效版)
- 深圳python多少钱信息_用Python分析深圳在售二手房数据,看看买房需要多少预算...
- 文本聚类平移算法的几点问题