大家好,我是也是Tommy,在CSDN写文,写Java时候我是Tommy,分享一些自己认为在学习过程中比较重要的东西,致力于帮助初学者入门,希望可以帮助你进步。以前一直更新C/C++方面的知识,今天是我第一次更新Java方面的知识,以后会持续更新,感兴趣的欢迎关注博主,和博主一起从0学习Java知识。大家可以去专栏查看之前的文章,希望未来能和大家共同探讨技术。
Java 是一个完整的平台 , 有一个庞大的库 , 其中包含了很多可重用的代码和一个提供诸如安全性 、跨操作系统的可移植性以及自动垃圾收集等服务的执行环境。
——Java核心技术 卷一(第十版)
在《Java核心技术》中说到:Java具有令人赏心悦目的语法和易于理解的语义,提供了可移植性,垃圾收集等,还有一个大型的库,是一种功能齐全的出色语言。对广大程序设计人员有着不可抗拒的吸引力。
Java语言在面世的时候就引起轰动,曾登TIOBE 排行榜榜首,在6月的TIOBE榜排名第三,虽说现在所占市场份额有所下滑,但不可置疑的是Java语言依旧是编程语言中的“大户”。
注释就是对程序功能的解释说明。以特定的符号作为标记,程序在运行过程中不会执行注释。
Java中标记注释的符号分为三种:
单行注释用"//"标记, 其注释内容从 // 开始到本行结尾。例如:
//注释内容
多行注释以 /* 开始,以 */ 结束,把一段内容包起来
/*
注释内容
注释内容
*/
文档注释,用于为类,方法(函数),属性进行说明(放在前面),调用时鼠标放在上面可以显示这段注释,语法是以 /** 开始,以 */ 结束
注意 : 在 Java 中 ,多行注释不能嵌套
也就是说,当一段代码中包含一个 /* ,在使用多行注释包裹是就达不到注释目的。
关键字是指 Java 中有特殊含义,用于特定用途的单词
关键字的特点是关键字中所有字母都为小写
例如:public,private,int等,我就不一 一列举了
保留字是指现有Java版本尚未使用,但以后版本可能会作为关键字使用的单词
例如: goto 、const
自己命名变量名或者方法名等标识符时要避免使用这些保留字和关键字
Java中对各种变量、方法和类等要素命名时使用的字符序列称为标识符。
Java中规定了定义标识符的规则:
由26个英文字母大小写,0-9 ,_或$ 组成
数字不可以开头。
不可以使用关键字和保留字,但能包含关键字和保留字。
Java中严格区分大小写,长度无限制。
标识符不能包含空格。
注意:在起名字时,为了提高阅读性,要尽量有意义,“见名知意”
byte : 一个字节 表数范围 : -128 ~ 127
short : 二个字节 表数范围 : -215 ~ 215-1
int : 四个字节 表数范围 : -231 ~ 231-1
long : 八个字节 表数范围 : -263 ~ 263-1
Java语言的整型常量默认为int型,声明long型常量可以后加**‘ l ’或‘ L ’** ,如:
int i = 600; //正确
long l = 8888888888L; //必须在数字后加l或L否则会出错
float : 单精度 四个字节 在储存大型浮点数组的时候可节省内存空间
double: 双精度 八个字节 double类型同样不能表示精确的值
float和double类型不能表示精确的值
float定义时要在数后加上f或F
double d = 123.4;
float f = 234.5f ;
boolean :布尔值取值的时候只允许取true或false,不能用其他的代替。
该类型适于逻辑运算,一般用于程序流程控制 。
char : 字符型的值是一个用单引号引起来的单个字符,例如:
char a = 'a';
char b = '中';
Java采用Unicode编码,一个字符占俩个字节,16位,所以可以用十六进制编码来表示
char a = 'a'; //a的Unicode编码为97
注意:Unicode 转义序列会在解析代码之前得到处理 。 例如, " " + “”(Unicode值"标识双引号)并不是一个由引号包围加号构成的字符串 。 实际上 ," 会在解析之前转换为 " ,这会得到也就是一个空串(“”+“”) 。
类 :最常用的就是String类型(字符串)
接口 : 如:List< E >:列表( E代表泛型 )
Map<K,V>:双链的集合,以键值对形式存储的,K(键)和V(值)都是泛型
数组:数组是指存储在一个连续的内存块中的相同数据类型的元素集合。因为引用的是内存地址,所以数组属于引用数据类型。
首先boolean型的值不能与其他类型相互转换
整形,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则:
容量小的类型默认转换为容量大的数据类型;数据类型按容量大小排序为:
byte,short,char->int->long->float->double
byte,short,char之间不会互相转换,他们三者在计算时首先会转换为int类型
容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造成精度降低或溢出;使用时要格外注意。
int i = 100;
double d = i;
double d1 = 10.99;
int i1 = (int) d1;
注意:
有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再进行计算。
Java 语言支持如下运算符:
算术运算符:
运算符
运算
范例
结果
+
正号
+3
3
-
负号
b=4; -b
-4
+
加
5+5
10
-
减
6-4
2
*****
乘
3*4
12
/
除 (取整)
5/5
1
%
取模 (取余)
7%5
2
++
自增(前):先运算后取值 ; 自增(后):先取值后运算
a=2;b=++a; a=2;b=a++;
a=3;b=3 a=3;b=2
- -
自减(前):先运算后取值 ; 自减(后):先取值后运算
a=2;b=- -a a=2;b=a- -
a=1;b=1 a=1;b=2
+
字符串相加
“He”+”llo”
“Hello”
字符串连接运算符:+ ;
关系(比较)运算符: >,<,>=,<=,==,!= ;
逻辑运算符:
&—逻辑与 | —逻辑或 !—逻辑非
&& —短路与 || —短路或 ^ —逻辑异或
a
b
a&b
a|b
!a
a^b
a&&b
a||b
true
true
true
true
false
false
true
true
true
false
false
true
false
true
false
true
false
true
false
true
true
true
false
true
false
false
false
false
true
false
false
false
异或就是左右的值一样时就是false,追求一个“异”字。
我们可以看到用逻辑与和短路与计算的值是相同的,那它们的区别在哪呢?
逻辑与:会把符号俩边的表达式都计算一边,然后判断
短路与:因为与运算符号俩边的表达式有一个false就返回false,所以如果计算了符号左边的表达式是false,就不会计算符号右边的表达式,直接返回false,如果左边的是true才会计算右边
逻辑或和短路或同理,短路或左边的表达式是true时就不会计算右边,直接返回true
public static void main(String[] args){
int a = 1;
int b = 2;
if(++a>1||++b>4){
System.out.println(a);
System.out.println(b);
}
System.out.println("-------------");
a = 1; //让值回到初始值
b = 2;
if(++a>1|++b>4){
System.out.println(a);
System.out.println(b);
}
System.out.println("-------------");
a = 1;
b = 2;
if(++a>3&&++b>4){
} else {
System.out.println(a);
System.out.println(b);
}
System.out.println("-------------");
a = 1;
b = 2;
if(++a>3&++b>4){
}else {
System.out.println(a);
System.out.println(b);
}
}
输出如下:
赋值运算符:
运算符
用法举例
等效的表达式
+=
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
位运算:
功能
<<
空位补0,被移除的高位丢弃,空缺位补0。
>>
被移位的二进制最高位是0,右移后,空缺位补0; 最高位是1,空缺位补1。
>>>
被移位二进制最高位无论是0或者是1,空缺位都用0补。
&
二进制位进行&运算,只有1&1时结果是1,否则是0;
|
二进制位进行 | 运算,只有0 | 0时结果是0,否则是1;
^
相同二进制位进行 ^ 运算,结果是0;1^1=0 , 0^0=0 不相同二进制位 ^ 运算结果是1。1^0=1 , 0^1=1
~
正数取反,各二进制码按补码各位取反 负数取反,各二进制码按补码各位取反
单目>算数运算符>移位>比较>按位>逻辑>三目>赋值
单目运算符(一元运算符,即一个变量):+,-,++,–
算数运算符:+,-,*,/,%
移位运算符:<<,>>
关系运算符:>,<,>=,<=,==,!=
位运算符:&,|,~,^,
逻辑运算符:&&,||
三目运算符:表达式1?表达式2:表达式3;
赋值运算符:= 等
使用Scanner类取得一个字符串或一组数字
在使用Scanner类对象时,需要在文件头带入 java.util.Scanner; 把类导入写法为:
import java.util.Scanner;
在创建一个Scanner对象时需要传入一个System.in参数给构造函数,因为实际上是System.in在取得用户输入。Scanner的next()方法用以 取得用户输入的字符串;nextInt()将取得的输入字符串转换为整数类型;nextFloat()转换成浮点型;nextBoolean()转 换成布尔型。
//写在方法中
System.out.print("输入:");
Scanner scan = new Scanner(System.in);
String read = scan.next ();
System.out.println("输入数据:"+read);
可以使用 System.out . print ( x ) 将数值 x 输出到控制台上。 这条命令将以x 对应的数据类型所允许的最大非 0 数字位数打印输出 X 。
System.out . println ( x ) ,如果将print改为println就会在输出完之后进行换行。
我在这里提到的输入/输出都是最基础的,还有文件的输入/输出等该知识更深层次的理解会在日后慢慢积累并分享,尽情期待。
if(条件){
//真执行语句
}else {
//假执行语句
}
条件必须是一个返回布尔值的表达式
多分支选择语句,根据表达式的值,来执行多个操作中的一个。
switch (表达式){
case V:
//语句1
break ;
case V1:
//语句N
break ;
default :
//如果没有上面的选项
}
表达式(变量)可以byte、short、int、char、枚举类型。jdk 7以后,可以使用String类型;
循环语句功能
在某些条件满足的情况下,反复执行特定代码的功能
循环语句的四个组成部分:
循环语句分类:
while 语句为如下形式:
while(逻辑表达式){
//语句
}
执行过程:先判断逻辑表达式的值。若=true,则执行其后面的语句,然后再次判断条件并反复执行,直到条件不成立为止
do {
//语句
}while (逻辑表达式);
执行过程:先执行语句,再判断逻辑表达式的值,若为true,再执行语句,否则结束循环。
for (表达式1;表达式2;表达式3){
//语句
}
执行过程:首先计算表达式1,接着执行表达式2,若表达式2的值 =true,则执行循环语句,接着计算表达式3,再判断表达式2的值;依此重复下去,直到表达式2的值=false.
break 语句用于终止某个语句块的执行。用在循环语句体中,可以强行退出循环;
public static void test(){
int stop = 4;
for (int i = 1; i <= 10; i++) {
//当i等于stop时,退出循环
if (i == stop){
break;
}
System.out.println(" i= " + i);
}
}
输出为:
continue 语句用在循环语句体中,用于终止某次循环过程,跳过循环体中continue 语句下面未执行的循环,开始下一次循环过程;
public static void test(){
int stop = 4;
for (int i = 1; i <= 10; i++) {
//当i等于stop时,跳过当次循环
if (i == stop){
continue;
}
System.out.println("i = " + i);
}
}
输出为:
Java的方法类似于其它语言的函数,方法是解决一类问题的步骤的有序组合,方法包含于类中.
方法的创建,声明格式:
[访问权限修饰符 修饰符…] [返回值类型] 方法名(形式参数类型 参数名){
Java语句;… … …
//如果有返回值就由return语句
[return 返回值;]
}
修饰符:告诉编译器如何调用该方法。定义了该方法的访问类型。
形式参数: 在方法被调用时用于接收外界输入的数据。
实参:调用方法时实际传给方法的数据。
返回值:方法在执行完毕后返还给调用它的环境的数据。
返回值类型:事先约定的返回值的数据类型,如无返回值,必须给出返回值类型void。
调用方法:
类的对象名.该类下面的方法名(实参列表)
实参的数目、数据类型和次序必须和所调用方法声明的形参列表匹配,
用于从当前执行的方法中退出, 返回到调用该方法的语句处继续执行。
有两种格式:
return 表达式; //将表达式的值返回
return; //不返回任何值,当方法说明中用void声明无返回值时, 可以使用这种格式,有时可省略
我是一个Java的初学者,文中如有不当之处,还希望各路大佬批评指点,我会及时
参考书籍:Java核心技术 卷1(第十版)