Java基本语法
Java基本语法
1. 注释、标识符、关键字
1.1 注释
java中的注释有三种:
- 单行注释
- 多行注释
- 文档注释
书写注释是一个非常好的习惯!
平时写代码一定要注意规范
//单行注释
/* 多
行
注
释
*/
/**
* @Description hello world
*
*
*/
1.2 标识符
Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
String name = "bob";
标识符注意点
-
所有的标识符都应该以字母(A-Z或者a-z)、美元符($)、或者下划线(_)开始
-
首字符之后可以是字母(A-Z或者a-z),美元符($)、下划线(_)或数字的任何字符组合
-
不能使用关键字作为变量名或者方法名
-
标识符是大小写敏感的
-
合法标识符举例:age,$salary,_value,__1_value
-
非法标识符举例:123abc,-salary,#abc
public static void main(String[] args){ String 王者荣耀 = "最强王者"; System.out.println(王者荣耀); }
-
可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音,很low
1.3 关键字
2. 数据类型
强类型语言
要求变量的使用要严格符合规定,所有的变量都必须先定义后才能使用
弱类型语言
Java的数据类型分为两大类
-
基本类型
整数类型:
byte占一个字节范围:-128-127
short占两个字节范围:-32768-32767
int占四个字节范围:-2147483648-2147483647
long占8个字节范围
浮点类型:
float占4个字节范围
double占8个字节范围
字符类型char占两个字节
布尔型boolean占1位只有true或者false
-
引用类型
2.1 基本类型
//整数
int num1 = 10;//最常用
byte num2 = 20;
short num3 = 30;
long num4 = 30L; //Long类型要在数字后面加个L
//小数:浮点数
float num5 = 50.1F;//float类型要在数字后面加个F
double num6 = 3.14;
//字符
char name = 'A';
//字符串,String不是关键字,是类
String name = "兔子";
//布尔值
boolean flag = true;
boolean flag = false;
位 (bit):是计算机内部数据储存的最小单位,11001100是一个八位二进制数。
字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示,
1B = 8bit
字符:是指计算机中使用的字母、数字、字和符号
1bit表示1位
1Byte表示一个字节1B=8b
1024B = 1KB
1024KB = 1M
1024M = 1G
2.2 数据类型拓展
2.2.1 整数拓展
进制:二进制0b开头 ,十进制,八进制0开头,十六进制0x开头
int i =10;
int i2 = 010;//八进制0开头
int i3 = 0x10;//十六进制0x开头
2.2.2 浮点数拓展
浮点数有限且离散,存在舍入误差即接近但不等于。
最好避免使用浮点数进行比较
最好避免使用浮点数进行比较
最好避免使用浮点数进行比较
使用BigDecimal数学工具类
2.2.3 字符拓展
char c1 = 'a';
char c2 = '中';
System.out.println(c1);
System.out.println(c2);
System.out.println((int)c1);
System.out.println((int)c2);
所有的字符本质还是数字
Unicode编码大小两个字节: 0-65536
char c3 = '\u0061';
2.2.4 转义字符
\t 制表符
\n 换行符
····
转义字符 | 意义 | ASCII码值(十进制) |
---|---|---|
\b | 退格(BS) ,将当前位置移到前一列 | 008 |
\f | 换页(FF),将当前位置移到下页开头 | 012 |
\n | 换行(LF) ,将当前位置移到下一行开头 | 010 |
\r | 回车(CR) ,将当前位置移到本行开头 | 013 |
\t | 水平制表(HT) (跳到下一个TAB位置) | 009 |
\v | 垂直制表(VT) | 011 |
\ | 代表一个反斜线字符''' | 092 |
' | 代表一个单引号(撇号)字符 | 039 |
" | 代表一个双引号字符 | 034 |
\0 | 空字符(NULL) | 000 |
\ddd | 1到3位八进制数所代表的任意字符 | 三位八进制 |
\uhhhh | 1到2位十六进制所代表的任意字符 | 二位十六进制 |
2.2.5 布尔值拓展
boolean flag = true;
if(flag){};
if(flag==true){};//这两个意思一样 Less is More! 代码要精简易读。
2.3 类型转换
由于Java是强类型语言,所以进行有些运算的时候,需要用到类型转换。
低---------------------------------------------------------------------------->高
byte,short,char -> int -> long -> float -> double
运算中,不同类型的数据先转化为同一类型,然后进行运算。
2.3.1 强制类型转换
(类型)变量名 高 --> 低
注意点:
-
不能对布尔进行转换。
-
不能把对象类型转换为不相干的类型。
-
在把高容量转换到低容量的时候,强制转换。反之自动转换。
-
强制转换的时候可能存在内存溢出问题,或精度问题。
System.out.println((int)23.7); //23 System.out.println((int)-45.89f);//-45
操作比较大的数时,要注意溢出问题。
int money = 10_0000_0000;
int years = 20;
int total = money*years;
System.out.println(total); // -1474836480,发生了溢出
long total2 = money*years;//默认是int,转换之前就已经发生了溢出
long total3 = money*((long)years);//正确输出20000000000
2.3.2 自动类型转换
低 --> 高
3. 变量、常量、作用域
3.1 变量
变量是什么:就是可以变化的量。
Java是一种强类型语言,每个变量都必须声明其类型。
Java变量是程序中最基本的储存单元,其要素包括变量名,变量类型和作用域。
type varName [=value] [{,varName[=value]}];
//数据类型 变量名 = 值;可以使用逗号隔开来声明多个同类型变量。
注意事项
- 每个变量都有类型,类型可以是基本类型,也可以是引用型。
- 变量名必须是合法的标识符。
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束。
变量作用域
-
类变量
-
实例变量:从属于对象。如果不自行初始化,则为这个类型的默认值。布尔值默认是false。除了基本类型,其余类型默认值都是null。
-
局部变量:必须声明和初始化值。
public class Variable{ static int allClicks = 0; //类变量 String str = "hello world"; //实例变量 public void method(){ int i = 0; //局部变量 } }
public class Demo{ //属性:变量 //类变量static static double salary = 2500; //实例变量:从属于对象 String name; int age; public static void main(String[] args){ //局部变量:必须声明和初始化值 int i = 10; System.out.println(i); //变量类型 变量名族 = new Demo(); Demo demo = new Demo(); System.out.println(demo.age); System.out.println(salary); } //其他方法 public void add(){ } }
变量的命名规范
-
所有的变量、方法、类名:见名知意
-
类成员变量:首字母小写和驼峰原则:monthSalary,除了第一个单词以外,后面的单词首字母大写
-
局部变量:首字母小写和驼峰原则
-
常量:大写字母和下划线:MAX_VALUE
-
类名:首字母大写和驼峰原则:Man,GoodMan
-
方法名:首字母小写和驼峰原则:run(),runRun()
3.2 常量
-
常量:初始化后不能再改变的值!不会变动的值。
-
所谓常量可以理解为一种特殊的变量,他的值被设定后,在程序的运行过程中不允许被改变。
final 常量名 = 值;
final double PI = 3.14;
- 常量名一般使用大写字符
static修饰符不存在先后顺序
static final double PI = 3.14;
final static double PI = 3.14;
4. 运算符
Java语言支持如下运算符:
- 算术运算符:+,-,*,/,%,++,--
- 赋值运算符:=
- 关系运算符:>,<,>=,<=,==,!=,instanceof 返回true或者false
- 逻辑运算符:&&,||,!
- 位运算符:&,|,^,~,>>,<<.>>>
- 条件运算符:?:
- 拓展赋值运算符:+=,-=,*=,/=
long a = 122313123131313L;
int b = 123;
short c = 10;
byte d = 8;
System.out.println(a+b+c+d); //Long 只要操作数存在long,结果就是long,否则都为int,同理有一个double就为double
System.out.println(b+c+d); //int
System.out.println(c+d); //int
4.1自增自减运算
public class Demo{
public static void main(String[] args){
// ++ -- 自增,自减 一元运算符
int a = 3;
int b = a++;//先给b赋值,再自增
int c = ++a;//先自增,再给c赋值
System.out.println(a);//5
System.out.println(b);//3
System.out.println(c);//5
}
}
幂运算
2^3
int a = Math.pow(2,3);
4.2 逻辑运算符、位运算符
boolean a = true;
boolean b = false;
System.out.println(a && b); //false
System.out.println(a || b); //true
System.out.println(!(a && b));//true
//短路运算
int c = 5;
boolean d = (c<4)&&(c++<10); //c<4为false之后,后面的就没有执行了
System.out.println(d); //false
System.out.println(c); //5
位运算
A = 0011 1100
B = 0000 1101
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001 异或
~B = 1111 0010
2 * 8 = 16 2* * 2 * 2 * 2
<< 左移 移动一次乘以二 >>右移 移动一次除以二
4.3 拓展运算符
a += b;// a = a + b;
a -= b;// a = a - b;
//字符串连接符 +
System.out.println(""+a+b);//只要非结尾出现一个String就会把其他的都转换成String再进行连接。
int a = 10;
int b = 20;
System.out.println(""+a+b); //1020
System.out.println(a+""+b); //1020
System.out.println(a+b+""); //30
4.4 三元运算符
x ? y : z
如果x==true,则结果为y,否则结果为z
int score = 50;
String type = score < 60? "不及格" : "及格";
System.out.println(type); //不及格
5. 包机制
-
为了更好地组织类,Java提供了包机制,用于区别类名的命名空间。
-
包语句的语法格式为:
package pkg1[. pkg2[. pkg3...]];
-
一般利用公司域名倒置作为包名;
-
为了能够使用某一个包的成员,我们需要在Java程序中明确导入改包。使用“import”语句可完成此功能
import package1[.package2...].(classname|*);
6. JavaDoc生成文档
-
javadoc命令是用来生成自己API文档的
-
参数信息
-
@author 作者名
-
@version 版本号
-
@since指明需要最早使用的jdk版本
-
@param 参数名
-
@return 返回值情况
-
@throws 异常抛出情况
package com.bo.www; /** * @author Tohka * @version 1.0 * @since 1.8 */ public class Study { String name; /** * @author Tohka * @param name * @return String * @throws Exception */ public String test(String name) throws Exception{ return name; } }
-
面向百度编程!
第一步:在工具栏中找到 Tool,然后再子菜单中找到 Generate JavaDoc。
第二步:在生成文档上进行配置。
配置的简单介绍:
参数说明
1.Whole project:整个项目都生成文档
2.Custom scope 自定义范围。如下:
(1)project files 项目文件,
(2)project production files 项目产品文件,
(3)project test files 项目的测试文件, 未知范围,class hierarchy 类层
3.include test source 包含测试目录
4.include JDK and … 包含jdk和其他的第三方jar
5.link to JDK documentation…链接到JDK api
6.output directy 生成的文档存放的位置
(1)private、package、protected、public 生成文档的级别(类和方法)
(2)右边的Generate…是选择生成的文档包含的内容,层级树、导航、索引..
(3)再右边是生成的文档包含的内容信息,作者版本等信息
7.Locale 语言类型,zh-CN
8.Other command line arguments 其他参数
9.Maximum heep… 最大堆栈