java基本语法
注释、标识符、关键字
注释
-
注释定义
-
注释不会被执行
-
写注释是一个非常好的习惯
-
平时写代码一定要规范
注释分类
-
单行注释
-
多行注释
-
文档注释
1 public class Hello { 2 public static void main(String[] args) { 3 //单行注释 // 4 //这是一个注释,不运行 5 System.out.println("Hello World!"); 6 //多行注释 /* */ 7 /* 8 我是多行注释 9 我是多行注释 10 */ 11 12 //JavaDoc:文档注释 有一定的功能 13 }
-
有趣的代码注释
1 /*** 2 * ░░░░░░░░░░░░░░░░░░░░░░░░▄░░ 3 * ░░░░░░░░░▐█░░░░░░░░░░░▄▀▒▌░ 4 * ░░░░░░░░▐▀▒█░░░░░░░░▄▀▒▒▒▐ 5 * ░░░░░░░▐▄▀▒▒▀▀▀▀▄▄▄▀▒▒▒▒▒▐ 6 * ░░░░░▄▄▀▒░▒▒▒▒▒▒▒▒▒█▒▒▄█▒▐ 7 * ░░░▄▀▒▒▒░░░▒▒▒░░░▒▒▒▀██▀▒▌ 8 * ░░▐▒▒▒▄▄▒▒▒▒░░░▒▒▒▒▒▒▒▀▄▒▒ 9 * ░░▌░░▌█▀▒▒▒▒▒▄▀█▄▒▒▒▒▒▒▒█▒▐ 10 * ░▐░░░▒▒▒▒▒▒▒▒▌██▀▒▒░░░▒▒▒▀▄ 11 * ░▌░▒▄██▄▒▒▒▒▒▒▒▒▒░░░░░░▒▒▒▒ 12 * ▀▒▀▐▄█▄█▌▄░▀▒▒░░░░░░░░░░▒▒▒ 13 14 * 单身狗就这样默默地看着你,一句话也不说。 15 */
-
字节补充说明:其主要度量单位是字节,1个字节(Byte)等于8位(b)二进制。位(bit,Binary Digits):存放一位二进制数,即0或1,为最小的存储单位,8个二进制位为一个字节单位。一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。英文标点占一个字节,中文标点占两个字节
标识符
关键字
break | ||||
---|---|---|---|---|
case | const | |||
continue | ||||
float | ||||
goto | ||||
long | native | |||
new | ||||
throws | ||||
try |
关键字 | 含义 |
---|---|
abstract | 表明类或者成员方法具有抽象属性 |
assert | 断言,用来进行程序调试 |
boolean | 基本数据类型之一,声明布尔类型的关键字 |
break | 提前跳出一个块 |
byte | 基本数据类型之一,字节类型 |
case | 用在switch语句之中,表示其中的一个分支 |
catch | 用在异常处理中,用来捕捉异常 |
char | 基本数据类型之一,字符类型 |
class | 声明一个类 |
const | 保留关键字,没有具体含义 |
continue | 回到一个块的开始处 |
default | 默认,例如,用在switch语句中,表明一个默认的分支。Java8 中也作用于声明接口函数的默认实现 |
do | 用在do-while循环结构中 |
double | 基本数据类型之一,双精度浮点数类型 |
else | 用在条件语句中,表明当条件不成立时的分支 |
enum | 枚举 |
extends | 表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口 |
final | 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量 |
finally | 用于处理异常情况,用来声明一个基本肯定会被执行到的语句块 |
float | 基本数据类型之一,单精度浮点数类型 |
for | 一种循环结构的引导词 |
goto | 保留关键字,没有具体含义 |
if | 条件语句的引导词 |
implements | 表明一个类实现了给定的接口 |
import | 表明要访问指定的类或包 |
instanceof | 用来测试一个对象是否是指定类型的实例对象 |
int | 基本数据类型之一,整数类型 |
interface | 接口 |
long | 基本数据类型之一,长整数类型 |
native | 用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的 |
new | 用来创建新实例对象 |
package | 包 |
private | 一种访问控制方式:私用模式 |
protected | 一种访问控制方式:保护模式 |
public | 一种访问控制方式:共用模式 |
return | 从成员方法中返回数据 |
short | 基本数据类型之一,短整数类型 |
static | 表明具有静态属性 |
strictfp | 用来声明FP_strict(单精度或双精度浮点数)表达式遵循 |
super | 表明当前对象的父类型的引用或者父类型的构造方法 |
switch | 分支语句结构的引导词 |
synchronized | 表明一段代码需要同步执行 |
this | 指向当前实例对象的引用 |
throw | 抛出一个异常 |
throws | 声明在当前定义的成员方法中所有需要抛出的异常 |
transient | 声明不用序列化的成员域 |
try | 尝试一个可能抛出异常的程序块 |
void | 声明当前成员方法没有返回值 |
volatile | 表明两个或者多个变量必须同步地发生变化 |
while | 用在循环结构中 |
-
Java所用的组成部分都需要名字。类名,变量名以及方法名都被称为标识符
命名规则
一、标识符命名规则
1、标识符用作给变量、方法和类命名。
2、以字母、下划线“()”和“$”符开头,后面可跟字母、下划线“_()”和“$”符或数字。
3、大小写敏感。
4、应该使用有意义的名称,达到见名知意的目的,并且长度无限制。
5、尽量不要使用中文。
6、不可以是true和false。true和false虽然不是关键字,但是有特殊用途。
7、避免与java关键字与java类库的类名重名,java关键字一共有51个
1 public class Demo01 { 2 public static void main(String[] args) { 3 String Ahello="yang"; 4 String hello="yang"; 5 String $hello="yang"; 6 String _hello="yang"; 7 String _1="yang"; 8 9 //String _1#="yang"; 10 //String 1hello="yang"; 11 //String #hello="yang"; 12 } 13 }//尽量不用中文,拼音
数据类型
强类型语言
-
强类型语言是一种强制类型定义的语言,一旦某一个变量被定义类型,如果不经过强制转换,则它永远就是该数据类型了,强类型语言包括Java、.net 、Python、C++等语言。
-
举个例子:定义了一个整数,如果不进行强制的类型转换,则不可以将该整数转化为字符串。
弱类型语言
-
弱类型语言是一种弱类型定义的语言,某一个变量被定义类型,该变量可以根据环境变化自动进行转换,不需要经过显性强制转换。弱类型语言包括vb 、PHP、javascript等语言。
-
1 var A =5; 2 var B = "5"; 3 SumResult = A +B; 4 MinResult = A -B;
二者区别
-
无论是强类型语言还是弱类型语言,判别的根本是是否会隐性的进行语言类型转变。强类型语言在速度上略逊于弱类型语言,但是强类型定义语言带来的严谨性又能避免不必要的错误。
Java的数据类型
-
基本类型
简单类型 boolean byte char short Int long float double 二进制位数 1 8 16 16 32 64 32 64 封装器类 Boolean Byte Character Short Integer Long Float Double 是非 整数 字符 整数 整数 整数 小数 小数 注:在IDEA中查看最大最小值,输入封装器名,选中按F4查看。
-
引用类型
-
类
-
接口
-
数组
-
-
-
扩展补充
-
整数:二进制(0b),八进制(0),十六进制(0x)
-
浮点数:(float)表示的数据有限,离散,存在舍入误差,是一个大约的数,接近但是不等于。建议:最好完全避免使用浮点数进行比较特别是银行业务,可使用BigDecimal
-
字符:字符是用数字来编码的,所以字符的本质是数字如:Unicode编码
-
转义字符:(\t)水平table,(\n)换行
-
1 public class Demo03 { 2 public static void main(String[] args) { 3 //整数拓展 进制 二进制0b 八进制0 十六进制0x 4 int i = 10; 5 int i2 = 010; 6 int i3 = 0x10; 7 8 System.out.println(i); 9 System.out.println(i2); 10 System.out.println(i3); 11 12 //======================================================= 13 //浮点数拓展? 银行业务怎么表示? 钱 14 //BigDecimal 数学工具类 15 //======================================================= 16 17 //float 有限 离散 舍入误差 大约 接近但不等于 18 //double 19 //最好完全避免使用浮点数进行比较 20 //最好完全避免使用浮点数进行比较 21 //最好完全避免使用浮点数进行比较 22 System.out.println("==================================="); 23 float f = 0.1f; //0.1 24 double d = 1.0 / 10; //0.1 25 26 System.out.println(f == d); //flase 27 28 float d1 = 23131313133131313131f; 29 float d2 = d1 + 1; 30 31 System.out.println(d1 == d2); //true 32 33 //======================================================= 34 //字符拓展? 35 //======================================================= 36 System.out.println("==================================="); 37 char c1 = 'a'; 38 char c2 = '中'; 39 40 System.out.println(c1); 41 42 System.out.println((int) c1);//强制转换 43 44 System.out.println(c2); 45 46 System.out.println((int) c2);//强制转换 47 48 //所有的字符本质还是数字 49 //编码 Unicode 表:(97 = a 65=A) 2字节 0-65536 Excel表有2的16次方(早期的最大行数) 50 51 //转义字符 52 // \t 水平制表符,相当于table键 53 // 54 // \n 换行 55 // \a 响铃 56 System.out.println("==================================="); 57 System.out.println("hello\tworld!"); 58 System.out.println("hello\n world!"); 59 60 System.out.println("==================================="); 61 String sa = new String("hello world"); 62 String sb = new String("hello world"); 63 System.out.println(sa == sb); 64 65 String sc = "hello world"; 66 String sd = "hello world"; 67 System.out.println(sc == sd); 68 //涉及到对象,从内存分析 69 70 //布尔值扩展 71 boolean flag = true; 72 if (flag == true) {}//新手 73 if (flag) {} //老手 74 //less is more ! 代码要精简易读 75 } 76 }
-
10 8 16 =================================== false true =================================== a 97 中 20013 =================================== hello world! hello world! =================================== false true
-
类型转换
-
由于Java是强类型语言,计算时需要类型转换。byte,short,char--->int--->long--->float--->double
-
运算中,不同类型的数据先转换为同一类型,然后再进行计算
-
强制类型转换
-
不能把对象类型转换为不相干的类型
-
高到低强制转化
-
转换时可能存在内存溢出,或者精度问题
-
不能对布尔值进行转换
-
-
自动类型转换
-
1 public class Dome04 { 2 public static void main(String[] args) { 3 int i=128; 4 byte b = (byte)i;//内存溢出 5 double d=i; 6 7 //强制转换 (类型)变量名 高-->低 8 //自动转换 低-->高 9 10 System.out.println(i); 11 System.out.println(b); 12 System.out.println(d); 13 14 /* 15 注意点: 16 1.不能对布尔值进行转换 17 2.不能把对象类型转换为不相干的类型 18 3.在把高容量转换为低容量的时候,强制转换 19 4.转换的时候可能存在内存溢出,或者精度问题! 20 */ 21 22 System.out.println("========================"); 23 System.out.println((int)23.7);//23 24 System.out.println((int)-45.89F);//-45 25 26 System.out.println("========================"); 27 char c='a'; 28 int e=c+1; 29 System.out.println(e);//98 30 System.out.println((char)e);//b 31 } 32 }
-
1 public class Dome05 { 2 public static void main(String[] args) { 3 //操作数比较大的时候,注意溢出问题 4 //JDK7新特性,数字之间可以用下划线分隔 5 int money=10_0000_0000; 6 int years=20; 7 int total=money*years;//-1474836480,计算时溢出了 8 System.out.println(total); 9 10 long total2 = money*years;//默认是int,转换之前已经存在问题了。 11 System.out.println(total2); 12 13 long total3 = money*((long)years);//先把一个数转换为long 14 System.out.println(total3);//200_0000_0000 15 } 16 }
注意:大型数据可以用下划线分隔,方便阅读
变量、常量
-
变量
-
变量是什么就:就是可以变化的量!
-
Java是一种强类型语言,每个变量都必须声明其类型。
-
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
-
1 type varName [=value] [{,varName[=value]}]; 2 //数据类型 变量名 = 值;可以使用逗号隔开来声明多个同类型变量(不推荐这样)
-
1 public class Dmeo07 { 2 public static void main(String[] args) { 3 //int a,b,c; 4 //int a=1,b=2,c=3; //程序可读性差 5 String name = "ljx"; 6 char x = 'X'; 7 double pi = 3.14; 8 } 9 }
-
注意事项
-
每个变量都有类型,类型可以是基本类型,也可以是引用类型。
-
变量名必须是合法标识符。
-
变量声明是一条完整的语句,因此每一个声明都必须以分号结束
-
-
变量作用域
-
类变量(加关键词static)
-
实例变量
-
局部变量
1 public class Demo08 { 2 3 //类变量 static 4 static double salary = 2500; //不用new了 5 //属性:变量 6 7 //实例变量:从属于对象;如果不自行初始化,这个类型的默认值 0 0.0 8 //布尔值:默认是false 9 //除了基本类型,其余默认值都是null; 10 String name; 11 int age; 12 13 //main方法 14 public static void main(String[] args) { 15 16 //局部变量:必须声明和初始化值 17 int i = 10; 18 19 System.out.println(i); 20 21 //变量类型 变量名字 = new Demo08(); 22 Demo08 demo08 = new Demo08(); 23 System.out.println(demo08.age); 24 System.out.println(demo08.name); 25 26 //类变量 static 27 System.out.println(salary); 28 } 29 //其他方法 30 public void add(){ 31 32 } 33 }
-
-
-
常量
-
常量(Constant):初始化(initialize)后不能再改变值!不会变动的值。
-
所谓的常量可以理解成一种特殊的变量,他的值被设定后,在程序运行过程中不再改变
final 常量名 = 值 final double PI = 3.14;
-
常量名一般使用大写字符
1 public class Demo09 { 2 3 //修饰符不存在先后顺序(static final) 4 static final double PI = 3.14; 5 6 public static void main(String[] args) { 7 System.out.println(PI); 8 } 9 }
-
-
变量的命名规范
-
所用变量、方法、类名:见名知意
-
类成员变量:首字母小写和驼峰原则:monthSalary
-
局部变量:首字母小写和驼峰原则
-
常量:大写字母和下划线:MAX_VALUE
-
类名:首字母大写和驼峰原则:Man,GoodMan
-
方法名:首字母小写和驼峰原则:run(),runRun()
-
运算符
Java运算符:
类别 | 符号 |
---|---|
算数运算符 | +,-,*,/,%,++,-- |
赋值运算符 | = |
关系运算符 | >,<,>=,<=,==,!=,instanceof |
逻辑运算符 | &&,||,! |
位运算符 | &,|,^,~,>>,<<,>>>> |
条件运算符 | ? : |
扩展赋值运算符 | +=,-=,*=,/= |
1 package operator; 2 3 public class Demo01 { 4 public static void main(String[] args) { 5 //二元运算符 6 //Ctrl + D :复制当前行到下一行 7 int a = 10; 8 int b = 20; 9 int c = 25; 10 int d = 25; 11 12 System.out.println(a+b); //30 13 System.out.println(a-b); //-10 14 System.out.println(a*b); //200 15 System.out.println(a/b); //0 16 System.out.println(a/(double)b); //0.5 17 } 18 }
---------------------------------------------------------- 19 package operator; 20 21 public class Demo02 { 22 public static void main(String[] args) { 23 long a=123123121221L; 24 double e=3; 25 int b=123; 26 short c = 10; 27 byte d = 8; 28 29 System.out.println(a+b+c+d); //Long 30 System.out.println(b+c+d);//Int 31 System.out.println(c+d);//Int 32 System.out.println(e+d);//double 33 } 34 }
----------------------------------------------------- 35 package operator; 36 37 public class Demo03 { 38 public static void main(String[] args) { 39 //关系运算符返回的结果:正确,错误 布尔值 40 //if 41 42 int a = 10; 43 int b = 20; 44 int c = 21; 45 46 //取余,模运算 47 System.out.println(c%a); // c/a 21/10 = 2...1 48 49 System.out.println(a>b); //false 50 System.out.println(a<b); //true 51 System.out.println(a==b); //false 52 System.out.println(a!=b); //true 53 } 54 }
--------------------------------------------------------------- 55 package operator; 56 57 public class Demo04 { 58 public static void main(String[] args) { 59 //++ -- 自增,自减 一元运算符 60 int a = 3; 61 62 int b = a++; //执行完这行代码后,先给b赋值,再自增 63 //a++ a=a+1 64 System.out.println(a); //4 65 //++a a=a+1 66 int c = ++a; //执行完这行代码前,先自增,再给c赋值 67 68 System.out.println(a); //5 69 System.out.println(b); //3 70 System.out.println(c); //5 71 72 //幂运算 2^3 2*2*2 = 8 很多运算我们用工具类来操作。 73 double pow = Math.pow(3,2); 74 System.out.println(pow); 75 } 76 }
------------------------------------------------------------------------- 77 package operator; 78 79 //逻辑运算符 80 public class Demo05 { 81 public static void main(String[] args) { 82 //与(and) 或(or) 非(取反) 83 boolean a=true; 84 boolean b = false; 85 86 System.out.println("a && b:"+(a&&b));//逻辑与,一假为假 false 87 System.out.println("a || b:"+(a||b));//逻辑或,一真为真 true 88 System.out.println("!(a && b):"+!(a && b));//真则假,假则真 true 89 90 //短路运算 91 int c = 5; 92 boolean d = (c<4)&&(c++<4); 93 System.out.println(d); //false 94 System.out.println(c); //5 95 } 96 }
------------------------------------------------------------------------------- 97 package operator; 98 99 public class Demo06 { 100 public static void main(String[] args) { 101 /* 102 A = 0011 1100 103 B = 0000 1101 104 ----------------------------- 105 A&B = 0000 1100 如果都为1才为1 106 A|B = 0011 1101 如果都为0才为0 107 A^B = 0011 0001 相同为0不同为1 108 ~B = 1111 0010 取反 109 110 2*8 = 16 2*2*2*2 111 效率极高!!! 112 << 左移 *2 113 >> 右移 /2 114 115 0000 0000 0 116 0000 0001 1 117 0000 0010 2 118 0000 0100 4 119 0000 1000 8 120 0001 0000 16 121 * */ 122 System.out.println(2<<3); //16 123 } 124 } ----------------------------------------------------------------------------------------------- 126 package operator; 127 128 public class Demo07 { 129 public static void main(String[] args) { 130 int a = 10; 131 int b = 20; 132 133 a+=b; //a=a+b 134 a-=b; //a=a-b 135 136 System.out.println(a);//10 137 138 //字符串连接符 + 139 System.out.println(a+b);//30 140 System.out.println(a+b+"");//30 141 System.out.println(""+a+b);//1020 142 } 143 } 144 package operator; ------------------------------------------------------------------------------------------------------------ 146 //三元运算符 147 public class Demo08 { 148 public static void main(String[] args) { 149 //X ? Y :Z 150 //如果x==true,则结果为y,否则为Z 151 152 int score = 89; 153 String type = score <60?"不及格":"及格"; //必须掌握 154 //if 155 System.out.println(type); //及格 156 } 157 }
包机制
-
为了更好地组织类,java提供了包机制,用于区别类名的命名空间
-
包语句的语法格式为
package pkg1[.pkg2[.pkg3...]];
-
一般用公司域名倒置作为包名
-
为了能够使用某一个包的成员,我们需要在java程序中明确导入该包。使用“import”语句
import package pkg1[.pkg2[.pkg3...]];
JavaDoc
-
javadoc命令是用来生成自己API文档的
-
参数信息
-
@author 作者名
-
@version 版本号
-
@since 指明需要最早使用的jdk版本
-
@param 参数名
-
@return 返回值情况
-
@throws 异常抛出情况
1 package com.wendi.base; 2 3 /** 4 * @author wendi 5 * @version 1.0 6 * @since 1.8 7 */ 8 public class Doc { 9 String name; 10 /** 11 * @author wendi 12 * @param name 13 * @return 14 * @throws Exception 15 */ 16 public String test(String name) throws Exception{ 17 return name; 18 } 19 }
-