java基础语法
注释、标识符、关键字
注释
注释不会被执行
新建Empty project
Moudles–加号新建模块—同上
File—Project Structure–project----project SDK:1.8 project language level:8—apply–ok
src–new-class-HelloWorld
java注释有三种:
-
单行//
-
多行/* */
-
文档/** */
更改单行注释颜色:
File–setting–editor–color scheme–java–commments–linecomments–勾选inherit valuesfrom
标识符
java所有的组成部分都需要名字。类名、变量名以及方法都被成为标识符
-
标识符注意点
-
所有的标识符都应该以A-Z、a-z、$、下划线开始
-
首字符之后可以是A-Z、a-z、数字、$、下划线的任何字符组合,但不能使用关键字作为变量名或方法名。
-
标识符是大小写敏感的
-
合法标识符举例: age、$salary._value、__1_value
例:
package com.shifei.base; //合法标识符 public class Domo01 { public static void main(String[] args) { String hello="asd"; String Hello="asd"; String $hello="asd"; String _hello="asd"; String h1ello="asd"; } }
关键字
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 |
数据类型
强类型语言
所以变量都必须先定义后才能使用
基本数据类型:
整数
package com.shifei.base;
//2进制 8进制0 16进制0x
public class Domo02 {
public static void main(String[] args) {
int a=10 ;//常规2进制
int a1=010;//8进制
int a2=0x10;//16进制
System.out.println(a);//10
System.out.println(a1);//8
System.out.println(a2);//16
}
}
浮点数
float double
package com.shifei.base;
//浮点数float double 判断两者是否相等
public class Domo03 {
public static void main(String[] args) {
float a1=10f;
float a2=10.2f;
float a3=10.4f;
double b1=10;
double b2=10.2;
double b3=10.4;
System.out.println(a1==b1);//true
System.out.println(a2==b2);//false
System.out.println(a3==b3);//false
}
}
特点:
1、在内存中占有的字节数不同:
单精度浮点数在机内存占4个字节,双精度浮点数在机内存占8个字节。
2、有效数字位数不同:
单精度浮点数有效数字8位,双精度浮点数有效数字16位。
3、数值取值范围:
单精度浮点数的表示范围: -3.40E+38~3.40E+38,双精度浮点数的表示范围: -1.79E+ 308~-1.79E+308。
4、在程中处理速度不同:
一般来说, CPU处理单精度浮点数的速度比处理双精度浮点数快,如果不声明,默认小数为double类型,所以如果要用float的话,必须进行强转。
float 有限 离散 舍入误差 大约数(接近但不等于)
double 最好完全用浮点数比较
银行业务怎么表示?
BigDecimal 数学工具类
字符
package com.shifei.base;
//字符 强制转换
public class Domo04 {
public static void main(String[] args) {
char a1='a';
char a2='你';
System.out.println(a1);//a
//强制转换 低转高需要强制转换
System.out.println((int)a1);//97
System.out.println(a2);//你
//强制转换
System.out.println((int)a2);//20320
}
}
所有字符本质还是数字
Unicode 表:97=a 65=A
字符串
package com.shifei.base;
//字符串
public class Domo05 {
public static void main(String[] args) {
String s1=new String("Hello world");
String s2=new String("Hello world");
System.out.println(s1==s2);//false
String s3="Hello world";
String s4="Hello world";
System.out.println(s3==s4);//true
}
}
转义字符
\t制表符
\n换行符
对象 从内存分析
布尔值
public class *****{
public static void main(String[] args) {
//布尔值
boolean flag=true;
if(flag)//与if(flag==true)相同 代码要精简
{
}
}
类型转换
-
java是强类型语言 所以进行运算时要类型转换
-
运算中,不同数据类型先转化成同一类型,然后再运算
-
byte,short char----int—long—float----double小数优先级大于整数
public class **** { public static void main(String[] args) { int i=128; //内存溢出 括号内强制钻换 (类型)变量名 Byte b=(Byte) i; System.out.println(i); System.out.println(b); } }
**注:**Byte最大值127 i值为128
package com.shifei.base;
//类型转换
public class Domo06 {
public static void main(String[] args) {
int i=128;
byte b=(byte) i;
System.out.println('i');//i
System.out.println('b');//b
System.out.println((int) 23.7);//23
System.out.println((int)-45.89f);//-45
char a='a';
int c=a+1;
System.out.println(c);//98
System.out.println((char) c);//b
}
}
注:
-
不能对布尔值进行转换
-
不能把数据类型转换成不相干类型
-
转换时,可能会有内存溢出或精度问题
-
高到低转换需要强制转换 低到高自动转换
package com.shifei.base;
//数据类型 int char
public class Domo07 {
public static void main(String[] args) {
System.out.println((int) 23.7);
System.out.println((int)-45.89f);
char a=‘a’;
int c=a+1;
System.out.println©;
System.out.println((char) c);
}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Sn7XbRBw-1614817751755)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210213160546731.png)]
错误案例:
public class ***** {
public static void main(String[] args) {
int money=10_0000_0000;
int year=20;
int total=money*year;
System.out.println(total);//操作时,数大的时候溢出问题
}
}
public class Dome7 {
public static void main(String[] args) {
int money=10_000_000_000;
int year=20;
long total2=money*year;
//结果相同 默认是int 转换前就已经转换完成了
System.out.println(total2);
}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wqcz5j36-1614817751759)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210213162619625.png)]
package com.shifei.base;
//类型转换 long
public class Domo08 {
public static void main(String[] args) {
int money = 10_0000_0000, year = 20;
//先把数字转换为long
long total = (long) money * year;
System.out.println(total);
}
}
输出结果正确
变量
其要素包括变量名、变量类型和作用域
public class *****{
public static void main(String[] args) {
int money=10_0000_0000, year=20;//数据类型 变量名=值;可以使用逗号隔开声明多个同类型变量java但最好别这么做,确保程序可读性。
注:
-
每个变量都有类型,类型可以是基本类型,也可以引用类型。
-
变量名必须是合法的标识符。
-
变量声明是一条完整语句,因此每一条声明必须以分号结束。
常量
-
一种特殊变量,他的值被设定后,程序将不会被改变
-
常量名一般使用大写字符
final double PI=3.14
package com.shifei.base;
//常量
public class Domo09 {
//变量类型前的都是i修饰符,修饰符不分先后顺序
static final double PI=3.14;
public static void main(String[] args){
System.out.println((PI));//3.14
}
}
作用域
类变量、实例变量、局部变量
public class ***** {
static int a=0;//局部变量
String int name;//实例变量
public static void main(String[] args) {
int i=0;//局部变量
}
}
package com.shifei.base;
//作用域 类变量、实例变量、局部变量
public class Domo10 {
static double salary=2500;//类变量static
String name;
boolean much;
int age;
int i=10;
public static void main(String[] args)//main 方法
{ int i=10;
System.out.println(i);//10
//实例变量
// 变量类型 变量名字=new base.Dome8()
Domo10 domo10 = new Domo10();
//局部变量:必须声明和初始化值
System.out.println(domo10.age);//0
System.out.println(domo10.name);//null
System.out.println(domo10.much);//false
System.out.println(salary);//2500.0
}
}
类变量:static
实例变量
从属于对象,如不进行初始化。会使用该类型的默认初始值。
**布尔值默认值为false**
**除了基本类型,其余默认值为null**
局部变量:必须声明和初始化值
变量命名规范
-
变量 方法 类名(辨名知义)
-
类成员变量、局部变量、方法名,首字母小写,并且之后的每个单词首字母都得大写
lastName run()
-
常量:字母大写和下划线 MAX_
-
类名:每个单词首字母大写 GoodMan
运算符
- 算术:+、-、*、/、%、++、–
- 赋值:= 例如:a=b(b赋值于a)
- 关系:>、<、>=、<=、==、!=instance ofq
- 逻辑:&&与、||或、!非
了解:
-
位:&、|、/、\、》、《
-
条件:?、:
-
扩展:+=、-=、*=、/=
算术运算符
%:取余,模运算
package com.shifei.operator;
//二元运算符 算术运算符
public class Domo00 {
public static void main(String[] args) {
int a=10;
int b=20;
int c=30;
int d=41;
System.out.println(a+b);//30
System.out.println(a-b);//-10
System.out.println(a*b);//200
System.out.println(a/b);//0
System.out.println(a/(double)b);//0.5
System.out.println(d%b);//41/20=2......1
}
}
package com.shifei.operator;
//运算时,数据类型分优先级
public class Domo01 {
public static void main(String[] args) {
long a=123123123123123l;
int b=123;
short c=10;
byte d=8;
double f=10.123545;
//long存在的时候,输出结果为long
System.out.println(a+b+c+d);
//没有long,输出结果为int
System.out.println(b+c+d);
//没有long,输出结果为int
System.out.println(c+d);
//有double存在时,输出结果为double
System.out.println(c+d+f);
}
}
输出结果:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cAvtxTXe-1614817751763)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210215034357899.png)]
关系运算符
package com.shifei.operator;
//关系运算符>、<、
public class Domo02 {
public static void main(String[] args) {
int a=10;
int b=20;
System.out.println(a>b);//false
System.out.println(a<b);//true
System.out.println(a==b);//false
System.out.println(a!=b);//true
}
}
关系运算符一般与if语句连用
一元运算符 自增、自减、++、–
package com.shifei.operator;
//自增、自减、++、--
public class Domo03 {
public static void main(String[] args) {
int a=3;
int b=a++;
/* ++a相当于a+1
a先给b赋值,然后a再自增*/
int c=++a;
/* a先自增再给c赋值*/
System.out.println(a);//5
System.out.println(b);//3
System.out.println(c);//5
}
}
幂运算
package com.shifei.operator;
//幂运算
public class Domo04 {
public static void main(String[] args) {
double pow= Math.pow(2,3);
System.out.println(pow);//8.0
}
}
逻辑运算
package com.shifei.operator;
//逻辑运算 &&与(and)||或(or)非(取反)
public class Domo05 {
public static void main(String[] args) {
boolean a=true;
boolean b=false;
//逻辑与 只有两者都为真,才为真
System.out.println("a && b:"+(b&&a));
//逻辑或 只要一个为真,就为真
System.out.println("a || b:"+(a||b));
//逻辑非 取反为真则为假
System.out.println("! (a && b):"+!(a&&b));
}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5mp4uGlW-1614817751765)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210215035419352.png)]
短路运算
package com.shifei.operator;
//短路运算
public class Domo06 {
public static void main(String[] args) {
int c=5;
boolean d=((c<4)&&(c++<4));//短路运算 从前开始运算,&&c<4为假则不用继续后面运算
System.out.println(d);//false
System.out.println(c);//5
}
}
位运算
&与|或~非^取反
A&B 如果都为1则为为1
A|B 如果一者为1则就为1
A^B 如果2者相同则为0ggggggggggggggggggg
~B 如为0则为1,反之
A=00111100 B=00001101
A&&B=00001100
A ||B=00111101
A^B=00110001
~B=11110010
<<左1 >>右1
package com.shifei.operator;
//位运算
public class Domo07 {
public static void main(String[] args) {
System.out.println(16>>3);//2
System.out.println(2<<3);//16
/* 00000001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 0101 5
0000 0110 6
0000 0111 7
0000 1000 8 2的三次方
0001 0000 16 */
}
}
package com.shifei.operator;
//字符串连接符+
public class Domo08 {
public static void main(String[] args) {
int a=10;
int b=20;
System.out.println(a+=b);//a=a+b
System.out.println(b-=a);//b=b-a
System.out.println(""+a+b);
/*字符串连接符+,string字符串类型
只要有一方出现string类型,会把其他操作都转换为字符串,再进行连接
*/
System.out.println(a+b+"");//先运算
}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c7XQeK45-1614817751766)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210214005553280.png)]
三元运算 条件运算符
package com.shifei.operator;
//条件运算符 三元
public class Domo09 {
public static void main(String[] args) {
// x?y:z 如果x==true则结果为y否则为
int score=80;
String type=score < 60 ? "不及格":"及格";
System.out.println(type);//及格
}
}
优先级
package com.shifei.operator;
//优先级先||后&&
public class Domo10 {
public static void main(String[] args) {
int a=10;
int b=15;
int c=20;
System.out.println((a<b)||(a==0)&&(c==a));//true
}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-syaASEm5-1614817751769)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210214013329387.png)]
先()、*、/、%、+、-、关系运算、==、!=、位运算(&与、^取反、|或)、&&、||、条件、赋值
包机制
建包
New----packbage-------名字-------托送文件至包------Refactor------Do Refactor
一般用公司域名倒置作为包名
导入包
import package1.package2. 文件名;
import package1.package2. *;导入这个包下所有的类
《阿里巴巴Java开发手册》
JavaDoc
jdk帮助文档—核心API文档-----8-
JavaDoc命令是用来生成自己API文档
参数信息
/*
@author
@version 1.0
@since 1.8
@param
@return
@throws exception
*/
使用IDEA生产JavaDoc文档
- 右击文档----show in Explor-----导航栏中进入cmd-----javadoc -encoding-UTF-8 -charest UFT-8----文件夹中选择index.intel
- 软件工具栏中Tools----Generate JavaDoc----路径-------Local:zh-CN -encoding-UTF-8 -charest UFT-8----文件夹中选择index.intel