Java基本语法
目录:
注释
-
平时我们编写代码,在代码量比较少的时候,我们还可以看懂自己写的,但是当项目结构一旦复杂起来,我们就需要用到注释了。
-
注释并不会被执行,是给我们写代码的人看到
-
书写注释是一个非常好的习惯
Java中的注释有三种:
单行注释://
多行注释:/* 注释 */
文档注释:/** 注释 */
public class HelloWoeld {
public static void main(String[] args){
//单行注释
//输出一个Hello,World!
System.out.println("Hello,World");
/*
我是多行注释
*/
//JavaDoc:文档注释 /** */
/**
* @Description HellWorld
*/
}
}
java Doc
javadoc命令是用来生成自己API文档的
参数信息
-
@author 作者名
-
@version 版本号
-
@since 指明需要最早使用的jdk版本
-
@param 参数名
-
@return 返回值情况
-
@throws 异常抛出情况
/** * @author longge * @version 1.0 * @since 1.8 */ public class Doc { String name; /** * @author longge * @param name * @return * @throws Exception */ public String test(String name) throws Exception{ return name; } }
平时写代码一定要注意规范!
关键字
abstract | assert | boolean | break | byte |
---|---|---|---|---|
case | catch | char | class | const |
continue | default | do | double | else |
enum | extends | final | finally | float |
for | goto | if | implements | import |
instanceof | int | interface | long | native |
new | package | private | protected | public |
return | strictfp | short | static | super |
switch | synchronized | this | throw | throws |
transient | try | void | volatile | while |
标识符注意点
-
所有的标识符都应该以字母(A-Z或者a-z)、美元符($)、或者下划线(_)开始
-
首字符之后可以是字母A-Z或者a-z)、美元符($)、或者下划线(_)或者数字的任何字符组合
-
不能使用关键字作为变量名或者方法名。
-
标识符是大小写敏感的
-
可以使用中文命名,但一般不建议这样去使用,也不建议使用拼音,很LOW
public class Demo01 { public static void main(String[] args){ String Ahello = "龙华望"; String NAME = "龙章铭"; String 王者荣耀 = "荣耀黄金"; } }
二、数据类型
java数据类型属于强类型语言,要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0JrmmOxr-1634628909179)(C:\Users\86150\AppData\Roaming\Typora\typora-user-images\image-20211015144041152.png)]
变量
-
变量是什么:就是可以变化的量!
-
Java是一种强类型语言,每个变量都必须声明其类型。
-
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
type varName [=value] [{,varName[=value]}]; //数据类型 变量名 = 值;可以使用多个逗号隔开来声明多个不同类型的变量。
注意事项:
-
每个变量都有类型,类型可以是基本类型,也可以是引用类型。
-
变量名必须是合法的标识符。
-
变量声明是一条完整的语句,因此每一个声明都必须以分号来结束。
八大类型
public class Demo02 { public static void main(String[] args) { //八大基本数据类型 //整数 int num1 = 10; //最常用 -2147483648-2147483648 byte num2 = 20; -128-127 short num3 = 30; -32768-32767 long num4 = 30l; //Long类型要在数字后面加个L //小数:浮点数 float num5 = 50.1F; double num6 = 3.1415926; //字符 char name = 'A'; //字符串,String不是关键字 String name1 = "龙华望"; //布尔值: 是非 boolean flag = true; // boolean flag = false; } }
变量拓展
//整数拓展: 进制 二进制0b 十进制 正常数字 八进制 0 十六进制 0x
int i = 10; //十进制
int i1 = 0b10; //二进制
int i2 = 010; //八进制
int i3 = 0x11; //十六进制 0-9 A-F
System.out.println(i);
System.out.println(i1);
System.out.println(i2);
System.out.println(i3);
System.out.println("======================================================================");
浮点苏拓展
//浮点数拓展 银行业务怎么表示?钱
//使用 BigDecimal 数学工具类
//============================================================================
//float 特点:他是 有限 离散 舍入误差 大约 接近但不等于
//double
//最好完全使用浮点数进行比较
float f = 0.1f; //0.1
double d = 1.0/10;//0.1
System.out.println(f==d);//false //理论相等 实际不相等
System.out.println(f);
System.out.println(d);
float d1 = 543345765f;
float d2 = d1 + 1;
System.out.println(d1==d2);//true //理论不相等 实际相等
System.out.println("===============================================================================");
字符拓展
//字符拓展
//===============================================================================
char c1 = 'a';
char c2 = '中';
System.out.println(c1);
System.out.println((int)c1); //强制转换c1的值
System.out.println(c2);
System.out.println((int)c2); //强制转换c2的值
//所有的字符本质还是数字(强制转换)
//编码 Unicode 表:(97 = A 65 = a)2字节 最大0-65536字节 Excel表使用的就是Unicode表
char c3 = '\u0061';
System.out.println(c3); //a
转义字符
\t 制表符
\n 换行符
’ 单引号字符
\ 反斜杠字符
\r 回车
\n 换行
\f 走纸换页
\t 横向跳格
\b 退格
//转义字符
// \t 制表符
// \n 换行符
System.out.println("Hello\tworld");
System.out.println("Hrllo\nWorld");
String sa = new String("hello world");
String sb = new String("hello world");
System.out.println(sa == sb; //不相等
String sc = "hello world";
String sd = "hello world";
System.out.println(sc == sd); //相等
//对象 从内存分析
布尔值拓展
//布尔值拓展
boolean flag = true;
if (flag = true){} //新手
if (flag){} //老手 //两段代码都是相等的,默认==true; less is More! 代码要精简易读
三、类型转换
由于java是强类型语言,所以要进行有些运算的时候,需要用到类型转换
//低----------------------------------------高
//byte,short,char->int->long->float->double
//小数的优先级大于整数
运算中,不同类型的数据先转化为同一类型,然后进行运算。
int i = 128; //128
byte b = (byte)i; //-128 //内存溢出
//强制转换 (类型名)变量名 高---低
//自动转换 低----高
System.out.println(i);
System.out.println(b);
/*注意点:
1.不能对布尔值进行转换
2.不能把对象类型转换为不相干的类型
3.再把高容量转换到低容量的时候,强制转换
4.转换的时候可能存在内存溢出,或者精度问题!
*/
System.out.println("=================================");
System.out.println((int)23.7); //23 小数点没有了
System.out.println((int)-45.7); //-45
System.out.println("==================================");
char c = 'a';
int d = c + 1;
System.out.println(d);
System.out.println((char) d);
//操作比较大的时候注意溢出问题
int money = 10_0000_0000; //十亿
int years = 20; //20年
int total1 = money * years; //计算的时候溢出了
long total2 = money * years;//默认是int ,转换之前已经存在问题了
System.out.println(total1);
long total3 = money * ((long)years);//计算之前转换,就没有问题
System.out.println(total3);
四、变量、常量
变量是什么:就是可以变换的量
Java是一种强类型语言,每个变量都必须声明其类型。
Java变量是程序中最基本的存储单元,其要素包括变量名、变量类型和作用域。
type varName [=value] [{,varName[=value]}];
//数据类型 变量名 = 值; 可以使用逗号隔开来声明多个同类型变量
注意事项:
-
每个变量都有类型,类型可以是基本类型,也可以是引用类型。
-
变量名必须是合法的标识符。
-
变量声明是一条完整的语句,因此每一个声明都必须以分号结束。
变量作用域
-
类变量
-
实列变量
-
局部变量
public class Demo05 { //类变量 static static double salary = 2500; //属性:变量 //实列变量:从属于对象; 如果不自行初始化,这个类型的默认值 0 0.0 //布尔值:默认是false //出了8大基本类型,其余的默认值都是null; String name; int age; //main方法 public static void main(String[] args) { //局部变量:必须声明和初始化值 int i = 10; System.out.println(i); //变量类型 变量名字 = new Demo05 Demo05 demo05 = new Demo05(); System.out.println(demo05.age); System.out.println(demo05.name); //类变量 static System.out.println(salary); } //其他方法 public void add(){ } }
常量 final
常量:初始化后不能再改变值,就是不会变动的值。
所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。
final 常量名 = 值; final double PI = 3.14;
常量名一般使用大写字符
变量的命名规范
- 所有变量、方法、类名:要见名知意
- 类成员变量:首字母小写和驼峰原则:monthSalary
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则:Man,GoodMan
- 方法名:首字母小写和驼峰原则:run(),runRun()
-
五、运算符
Java语言支持如下运算符:优先级()
- 算数运算符:+,-,*,/,%,++,–
- 赋值运算符:=
- 关系运算符:>、<、>=、<=、==、!=instanceof
- 逻辑运算符:&&、||、!
- 位运算符:&、|、^、~、>>、<<、>>>(了解!!!)
- 条件运算符:?:
- 扩展赋值运算符:+=,-=、*=、/=
//二元运算符
//Ctrl + d :复制当前行到下一行
int a = 10;
int b = 20;
int c = 15;
int d = 25;
System.out.println(a + b);
System.out.println(a - b);
System.out.println(a * b);
System.out.println(a / (double)b);
public static void main(String[] args) {
//关系运算符返回的结果:正确、错误 通过布尔值表示
int a = 10;
int b = 20;
int c = 21;
Sustem.out.println(c%a);
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a==b);
System.out.println(a!=b);
}
public static void main(String[] args) {
//++ 自增 , -- 自减 一元运算符
int a = 3;
int b = a++; //执行完代码后给b赋值,在自增b=4
//a++ a = a + 1;
int c = ++a;//执行玩这行代码前,先自增,再赋值
System.out.println(a);
System.out.println(a);
System.out.println(b);
//幂运算 2^3 = 2*2*2 = 8 很多运算,我们会使用一些工具类来操作(Math)
double pow = Math.pow(3,2);
System.out.println(pow);
}
public static void main(String[] args) {
// 与(add) 或(or) 非(取反)
boolean a = true;
boolean b = false;
System.out.println("a && b:" + (b && a));//逻辑与运算:两个变量都为真,结果才为true
System.out.println("a || b:" + (a || b));//逻辑或运算:两个变量有一个为真,结果才为true
System.out.println("! (a && b ):" + ! (a && b));//如果结果为真则为假,如果结果为假则为真
//短路运算
int c = 5;
boolean d = (c<4) && (c++<4);// c<4结果为假,后面c++不会在执行
System.out.println(d);
System.out.println(c);
}
/*
位运算
A = 0011 1100
B = 0000 1101
---------------------------------------------
A & B = 0000 1100 两个位同时为1则为1,否则为0
A | B = 0011 1101 两个位有一个位1,两个为0则为0
A ^ B = 0011 0001 两个位相同则为0,否则为1
~B = 1111 0010 两个位结果位为真,则为假0,两个位结果为假则为真1
面试题:
2 * 8 怎么最快
2 * 8 = 16 2*2*2*2
底层位运算效率极高
<< *2
>> /2
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 0101 5
0000 0110 6
0000 0111 7
0000 1000 8
0001 0000 16
*/
System.out.println(2<<3); //答案 位运算最快
public static void main(String[] args) {
int a = 10;
int b = 20;
a += b; // a = a+b
a -=b; // a = a-b
System.out.println(a);
//字符串连接符 + , 输出类型:String
System.out.println(""+a+b);
System.out.println(a+b+"");
}
public static void main(String[] args) {
// x ? y : z
//如果x == true,则结果为y,否则结果为z
int score = 50;
String type = score < 60 ? "不及格" : "及格";
System.out.println(type);
}
包机制
为了更好的组织类,Java提供了包机制,用于区别命名空间,包的本质就是文件夹
包语句的语法格式为:
package pkg1[.pkg2[.pkg3...]];
一般利用公司域名倒置作为包名;
比如:www.baidu.com com.baidu.www
为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。使用“import”语句可以完成此功能
import package1[.package2...].(classname|*);