Java基础语法
Java基础语法
注释
-
写代码一定要注意规范
-
Java中的注释有三种
-
单行注释
-
多行注释
-
文档注释
有趣的代码注释
-
标识符
关键字
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 |
- Java 所有的组成部分都需要名字。类名,变量名以及方法名都被称为标识符。
标识符注意点
- 所有的标识符都应该以字母(A-Z 或者 a-z),美元符($),或者下划线( _ )开始
- 首字符之后可以是字母(A-Z或者a-z),美元符($)、下划线( _ )或数字的任何字符组合
- 不能使用关键字作为变量名或方法名
- 标识符是大小写敏感的
合法标识符举例:age、$salary、_value 、__1_value
非合法标识符举例:123abc/-salary/#abc
- 可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音,很low
数据类型
-
强类型语言
- 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用
-
弱类型语言
- VB JS
-
Java的数据类型分为两大类
- 基本类型(primitive type)
- 数值类型
- 整数类型
- byte占1个字节范围:-128-127
- short占2个字节范围:-32768-32767
- int占4个字节范围
- long占8个字节范围
- 浮点类型
- float占4个字节
- double占8个字节
- 字符类型 char占2个字节
- 整数类型
- boolean类型:占1位其值只有true和false两个
- 数值类型
- 引用类型(reference type)
- 类
- 接口
- 数组
//整数 int num1 = 10; //最常用 byte num2 = 20; short num3 = 30; long num4 = 30L; //long类型要在数字后面加个L //小数:浮点数 float num5 = 50.1F; //float类型要在数字后面加个F double num6 = 3.141592646151654; //字符 char name = '陈'; //字符串,String不是关键字,是类 String name0 = "陈十六"; //布尔值:是 非 boolean flag = true; //boolean flag = false;
- 基本类型(primitive type)
-
整数拓展
- 二进制 0b
- 十进制
- 八进制 0
- 十六进制 0x 0~9 A~F
int i = 10; //十进制 10 int i2 = 010; //八进制 8 int i3 = 0x10; //十六进制 16
-
浮点数拓展
//BigDecimal 数学工具类 //float 有限,离散,舍入误差,大约,接近但不等于 //double //最好完全使用浮点数进行比较 float f = 0.1f; //0.1 double d = 1.0/10; //0.1 System.out.println(f==d); //false float d1 = 222222222222222f; float d2 = d1 + 1; System.out.println(d1==d2); //true
-
字符拓展
char c1 = 'a'; char c2 = '中'; System.out.println(c1); //a System.out.println((int)c1); //强制转换 97 System.out.println(c2); //中 System.out.println((int)c2); //强制转换 20013 //所有的字符本质还是数字 //编码Unicode表:(97=a 65=A) 2字节 0-65536 //U000 UFFF char c3 = '\u0061'; System.out.println(c3); //a
-
转义字符
// \t 制表符 // \n 换行
-
布尔值拓展
String sa = new String("hello world"); String sb = new String("hello world"); System.out.println(sa==sb); //false String sc = "hello world"; String sd = "hello world"; System.out.println(sc==sd); //true //对象 从内存分析 boolean flag = true; if(flag==true){} //新手 if(flag){} //老手 默认为true 代码要精简易读
字节
-
位(bit):是计算机 内部数据 储存的最小单元
-
字节(byte):是计算机中 数据处理 的基本单位,习惯上用大写 B 来表示
-
1B = 8bit
-
字符:是指计算机中使用的字母、数字、字和符号
-
1bit表示1位
-
1B表示一个字节 1B=8b
-
1024B=1KB
-
1024KB=1M
-
1024M=1G
类型转换
-
由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换
- 低--------------------------------->高
- byte,short,char-> int->long->float->double
-
运算中,不同类型的数据先转化为同一类型,然后进行运算。
-
强制类型转换 (类型)变量名 高--->低
-
自动类型转换 低--->高
- 注意
- 不能对布尔值进行转换
- 不能把对象类型转换为不相干的类型
- 在把高容量转换到低容量的时候,强制转换
- 转换的时候可能存在内存溢出,或者精度问题
int i = 123; double b = i; //强制转换 (类型)变量名 高---低 //自动转换 低---高 System.out.println(i); //123 System.out.println(b); //123.0 System.out.println("===================="); System.out.println((int)23.7); //23 System.out.println((int)-45.89f); //-45 System.out.println("====================="); char c = 'a'; int d = c+1; System.out.println(d); //98 System.out.println((char) d); //b
- 注意
-
操作比较大的数的时候,注意溢出问题
-
JDK7新特性,数字之间可以用下划线分割
int money = 10_0000_0000; int years = 20; int total = money*years; // -1474836480,计算的时候溢出了 long total2 = money*years; // 默认是int,转换之前已经存在问题了? long total3 = money*((long)years); //先把一个数转换为long System.out.println(total); // -1474836480 System.out.println(total2); // -1474836480 System.out.println(total3); // 20000000000
变量
-
Java是一种强类型语言,每个变量都必须声明其类型。
-
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
type varName [=value] [{,varName[=value]}]; //数据类型 变量名 = 值;可以使用逗号隔开来声明多个同类型变量。
-
注意事项
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型
- 变量名必须是合法的标识符
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束
变量作用域
-
类变量:static
-
实例变量:从属于对象;如果不自行初始化,这个类型的默认值 0 0.0
- 布尔值:默认值是false
- 除了基本类型,其余的默认值都是null
-
局部变量:必须声明和初始化值
public class Demo07 { //类变量 static static double salary = 2005; //实例变量 String name; int age; //main方法 public static void main(String[] args) { //局部变量 int i = 10; System.out.println(i); System.out.println(salary); //变量类型 变量名字 = new Demo07(); Demo07 demo07 = new Demo07(); System.out.println(demo07.age); System.out.println(demo07.name); } //其他方法 public void add(){ System.out.println(); } }
public class Variable{ static int akkClicks=0; //类变量 String str="hello world"; //实例变量 public void method(){ int i =0; //局部变量 } }
常量
-
常量(Constant):初始化(initialize)后不能再改变值。不会变动的值。
-
所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。
final 常量名 = 值; // 修饰符不存在先后顺序 static final double PI = 3.14;
-
常量名一般使用大写字符。
变量的命名规范
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则:monthSalary, 除了第一个单词以外,后面的单词首字母大写 lastName
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则:Man, GoodMan
- 方法名:首字母小写和驼峰原则:run(), runRun()
运算符
- Java语言支持如下运算符(重点前四行) 注意优先级()
- 算术运算符:+,-,*, /,%,++,--
- 赋值运算符:=
- 关系运算符:>,<,>=,<=,==,!= instanceof
- 逻辑运算符:&&,||,!
- 位运算符:&,|,^,~,>>,<<,>>>(了解)
- 条件运算符:?:
- 扩展赋值运算符:+=,-=,*=,/=
// 二元运算符
// 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
long a = 1213123123123L;
int b = 123;
short c = 10;
byte d = 8;
System.out.println(a+b+c+d); //Long 1213123123264
System.out.println(b+c+d); //Int 141
System.out.println(c+d); //Int 18
//关系运算符返回的结果:正确 错误 布尔值
//if
int a = 10;
int b = 20;
int c = 21;
//取余,模运算
// c/a 21/10=2...1
System.out.println(c%a); //1
System.out.println(a>b); //false
System.out.println(a<b); //true
System.out.println(a==b); //false
System.out.println(a!=b); //true
//++ -- 自增,自减 一元运算符
int a =3;
int b =a++; //执行完这行代码之后,先给b赋值,再自增
//a=a+1;
System.out.println(a); //4
//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 = 8 很多运算,我们会使用一些工具类来操作!
double pow = Math.pow(2,3);
System.out.println(pow); //8.0
// 与(and) 或(or) 非(取反)
boolean a = true;
boolean b = false;
System.out.println("a && b:"+(a && b)); //逻辑与运算:两个变量都为真,结果才为true false
System.out.println("a && b:"+(a || b)); //逻辑或运算:两个变量有一个为真,则结果才为true true
System.out.println("a && b:"+!(a && b)); //如果是真,则变为假,如果是假则变为真 true
//短路运算
int c =5;
boolean d = (c<4)&&(c++<4);
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 相同就是0 不同就是1
~B= 1111 0010
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 1000 8
0001 0000 16
*/
System.out.println(2<<3);
int a = 10;
int b = 2
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+""); //“”在后边,先运算再拼接
// x ? y : z
// 如果x==true,则结果为y,否则结果为z
int score = 50;
String type = score <60?"不及格":"及格"; // 必须掌握
// if
System.out.println(type);
包机制
- 为了更好地组织类,Java提供了包机制,用于区别类名的命名空间。
- 包语句的语法格式为:
package pkg1[. pkg2[. pkg3...]];
-
一般利用公司域名倒置作为包名;
- com.csk.xxx
-
为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。使用"import"语句可完成此功能
import package1[.package2...].(classname|*);
- 推荐书籍:阿里巴巴开发手册
JavaDoc
- Javadoc命令是用来生成自己API文档的
- 参数信息
- @author 作者名
- @version 版本号
- @since 指明需要最早使用的jdk版本
- @param 参数名
- @return 返回值情况
- @throws 异常抛出情况
package com.csk.base;
/**
* @author sixteen
* @version 1.0
* @since 1.8
*/
public class Doc {
String name;
/**
* @author sixteen
* @param name
* @return
* @throws Exception
*/
public String test(String name) throws Exception{
return name;
}
//是通过命令行 javadoc 参数 java文件
//javadoc -encoding UTF-8 -charset UTF-8 Doc.java
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现