文章同步:
知乎:Java语法基础知识(笔记)
:Java基础知识笔记(含代码举例)
博客园:我的博客
一、注释、标识符、关键字
注释
- 平时我们写的代码量较小时,可以看的懂。但是一旦结构复杂起来,我们就需要注释了
- 注释平不会被执行,是给我们程序员看的
- 书写注释是一个非常好的习惯
- java中有三种注释:
- 单行注释 // 注释部分
- 多行注释 /* 注释部分*/
- 文档注释
//有趣的代码注释:
/*
_(\_/)
,((((^`\
(((( (6 \
,((((( , \
,,,_ ,((((( /"._ ,`,
((((\\ ,... ,(((( / `-.-'
))) ;' `"'"'""(((( (
((( / ((( \
)) | |
(( | . ' |
)) \ _ ' `t ,.')
( | y;- -,-""'"-.\ \/
) / ./ ) / `\ \
|./ ( ( / /'
|| \\ //'|
|| \\ _//'||
|| )) |_/ ||
\_\ |_/ ||
`'" \_\
`'"
*/
关键字
abstract、assert、boolean、break、byte、case、catch、char、class、continue、default、do、double、else、enum、extends、final、finally、float、for、if、implements、import、int、interface、instanceof、long、native、new、package、private、protected、public、return、short、static、strictfp、super、switch、synchronized、this、throw、throws、transient、try、void、volatile、while。
标识符
java所有组成部分部分都需要名字。类名、变量名、方法名都被称为标识符。
所有标识符都应该以字母"A-Z,a-z"、美元符"$"、下划线"_"为首字符开始的。
首字符后可以是字母"A-Z,a-z"、美元符"$"、下划线"_"或数字之间任意组合的。
不能使用关键字作为标识符。
-
合法标识符举例:
age、_school、$dollar
-
不合法的标识符举例
123abc、-mount、#cat
二、数据类型
- 强类型语言
要求变量的使用严格符合规定,所有变量都必须定义后才能使用 - 弱类型语言
-
Java的数据类型分为两类
-
基本类型(primitive type)
-
整数类型
- byte占1字节:-128-127
- short占2字节
- int占4字节
- long占8字节
-
浮点数类型
- float占四个字节
- double占四个字节
-
字符型
- char占两个字节
boolean类型:占一位,有true、false
-
引用类型(reference type)
- 类
- 接口
- 数组
字节(Byte)是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。一个字节存储8位无符号数,储存的数值范围为0-255。(1字节=8位)(1024B = 1k)(1024k = 1M)(1024M = 1G)
参考链接:电脑32位和64位有什么区别呢?
-
拓展
-
熟练进制转换方法。参考链接: 进制转换
十进制 二进制0b 八进制0 十六进制0x 0~10 0~1 0~7 0~9 A~F -
避免使用浮点数进行数值比较
浮点数比较会出现精度问题:参考链接: 浮点数比较会出现的问题
float表现的字长是有限的、离散的。浮点数一般存在一个概念叫“舍入误差”,由于字长很大的时候表现出来的就是一个大约的数、是不等于的数。
三、类型转换
-
Java是一个强类型语言,所以有些运算中需要运用到类型转换
低==============================》高
bytes,short,char -> int -> long -> float ->double
运算中不同类型的数据有限转换成同一类型,然后进行运算。
public class Demo01 {
public static void main(String[] args){
int i = 128;
byte b = (byte)i; //内存溢出
double c = i;
//强制转换 (类型)变量名 高===》低
//自动转换 低==》高
System.out.println(i); //128
System.out.println(b); //-128
System.out.println(c); //128.0
/*
* 注意点
* 1、不能对布尔值进行转换
* 2、不能把对象转换为不相关的类型
* 3、吧高容量向低容量时候,强制转换
* 4、低容量像高容量转换时自动转换
* 转换过程中可能出现内存溢出、精度问题
*
*/
}
}
四、变量
- 变量就是能变化的量
- Java是一个强类型语言,每个变量都必须声明其类型
- Java变量是程序中最基本的存储单元,其中包括变量名,变量类型,作用域
type varname [=value][{,varname[=value]}];
//数据类型 变量名 = 值;可以用逗号隔开多个同类型的变量
-
注意事项
每个变量都有类型,类型可以是基本类型也可以是引用类型
变量名必须是合法的标识符
变量声明是一个完整的语句,因此每个生命都必须以分号结束
public class Demo03 {
//类变量 static
static double salary = 2500;
//属性:变量
//示例变量:从属于对象;如果不进行初始化,这个类型默认值 0 0.0 null
//boolean默认值是false;
//除了基本类型,其余都是null;
String name;
int age;
//main方法
public static void main(String[] args) {
//局部变量:必须声明和初始化值
int i = 13;
System.out.println(i);
//变量类型 变量名字 = new Demo03;
Demo03 demo03 = new Demo03();
System.out.println(demo03.age);
//类变量
System.out.println(salary);
}
//其他方法
public void add(){
System.out.println();
}
}
五、常量
- 常量(constant):初始化(initialize)后不能改变值。
- 可以理解成一种特殊变量,他的值设定后,在程序运行过程中不允许被改变。
final 常量名 = 值;
final double PI = 3;
- 常量名一般使用大写字符。
public class Demo04 {
//修饰符不区分先后顺序
static final double PI = 3;
public static void main(String[] args) {
System.out.println(PI);
}
}
//shuchu :3.0
- 变量名的规范
- 所有变量、类名、方法:见名知意
- 所有成员变量、局部变量、方法名:首字母小写和驼峰原则:除第一个单词意外其余单词首字母大写,monthSalary
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则:GoodMan
六、运算符
- 算数运算符(+, -, *, / ,%,++,--)
public class Demo01 {
public static void main(String[] args) {
//二元运算
//ctrl+D复制当前行到下一行
int a = 10;
int b = 20;
int c = 30;
int d = 40;
System.out.println(a+b); //30
System.out.println(a-b); //-10
System.out.println(a*b); //200
System.out.println(a/(double)b); //结果为小数0.5,需要转换一下类型
}
}
public class Demo02 {
public static void main(String[] args) {
long a =7419647L;
int b = 123;
short c = 456;
byte d = 8;
System.out.println(a+b+c+d);//long
System.out.println(b+c+d);//int
System.out.println(c+d);//int
/*
运算中只要出现long类型,其输出结果为long类型
运算中没有long,输出结果均为int型
*/
}
}
public class Demo03 {
public static void main(String[] args) {
// ++ , -- 自增自减
int a = 3;
int b = a++; //先将a的值赋给b,在执行a自增1
// a++ a = a + 1
int c = ++a; //先自增,在赋值给c
System.out.println(a); //5
System.out.println(b); //3
System.out.println(c); //5
//幂运算 2^3 2*2*2
double asd = Math.pow(2,3);
System.out.println(asd); //8.0
}
}
- 逻辑运算符 (&&,||,! )
public class Demo04 {
public static void main(String[] args) {
//与或非
boolean a = true ;
boolean b = false;
System.out.println("a && b:"+(a&&b)); //a && b:false
System.out.println("a || b:"+(a||b)); //a || b:true
System.out.println("!(a && b):"+!(a&&b)); //!(a && b):true
//短路运算
int c = 5;
boolean d = (c<4)&&(c++<4);// 未执行(c++<4)
System.out.println(d);//false
System.out.println(c);//5
int e = 5;
boolean f = (e++<4)&&(e<4);
System.out.println(f);//false
System.out.println(e);//6
}
}
- 关系运算符(> , < , >= , <= , == , !=instanceof)
- 位运算符(& ,|,^, ~ , >> , << , >>>(了解!!!))
public class Demo05 {
public static void main(String[] args) {
/*
A = 0011 1100
B = 0000 1101
------------------------
A&B= 0000 1100
A|B= 0011 1101
A^B= 0011 0001(不相同为1,相同为0)
~B = 1111 0010
2*8 = 16 2*2*2*2
位运算,效率高
<< 左移 相当于×2
>> 右移 相当于➗2
0000 0001 1
0000 0010 2
0000 0100 4
0000 1000 8
0001 0000 16
*/
System.out.println(2<<3);//将2左移3位,即2×8
}
}
- 扩展赋值运算符:(+= ,-= , *= , /=)
public class Demo06 {
public static void main(String[] args) {
int a = 10;
int b = 20;
a += b; //a = a + b
System.out.println(a);
a -= b; //a = a -b
System.out.println(a);
//字符串连接符 + , String
System.out.println("haha"+a+b); //haha1020.字符串在前面,后面数字位拼接
System.out.println(a+b+"haha"); //30haha,字符串在后面,前面的数字为运算
}
}
- 条件运算符(? :)
public class Demo07 {
public static void main(String[] args) {
// x?y:c
//如果x为true结果为y,否则为c。
int score = 80;
String type = score<60?"fail":"success"; //必须掌握
System.out.println(type);
}
}
- 赋值运算符(=)
- 运算符优先级(略,可自行百度。现一般规范程序为了提高可读性都使用括号)
七、包机制
- 为了更好地组织类,Java提供了包机制,用于各类名的命名空间。
- 包语句的格式为:
package pkg1[.pkg2[. pkg3]];
- 一般运用公司域名倒置作为包名;
例如 com.baidu.www
- 为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。使用import语句完成此项功能。
import package1[.package2...].(classname|*)
八、JavaDoc
- javadoc命令是用来生成自己的api文档
-
参数信息
- @author 作者名
- @version版本名
- @since 指明需要早使用的jdk版本
- @param 参数名
- @return 返回值情况
- @throws 异常抛出情况
-
生成javadoc文档
- 命令行:
javadoc [-encoding UTF-8 -charset UTF-8] doc.java
- 使用IDEA产生JavaDoc文档
参考链接:如何使用Intellij Idea生成JavaDoc文档