java基础知识
注释
注释的概念:注释的内容代码是不会执行的,可以帮助自己和别人看自己写的代码。
Java的注释有三种:
-
单行注释://+内容
注释一行内容
将上面那条代码注释掉后,程序就不会执行那行代码
-
多行注释
-
文档注释(不常用)
标识符和关键字
关键字
关键字是系统本省就起好的名字,往后起名字都不能起关键字。
比如给类名起名字就不能取关键字
如上:if是一个关键字,但是当它成为类名时系统报错。
标识符
java所有的组成部分都需要名字。类名,变量名,方法名都需要标识符。
标识符的起名规范:
- 所有的标识符以大小写字母,美元符($),或者(下划线)_开始
- 首字符之后可以是大小写字母,美元符($),任意数字,或(下划线)_组合成标识符
- 不能使用关键字作为变量名或者方法名
- 标识符大小写敏感
- 不推荐使用中文命名
数据类型
java时强类型语言,要求变量的使用要严格符合规定,所有变量先定义后使用。
java的数据类型分为基本类型和引用类型
基本类型
整数类型:
- byte占1字节,范围是-128-127
byte i = 10;
- short占2字节,范围是-32768-32767
short i1=20;
- int占4字节,范围是-2147483648-2147483647
int i3=30;
- long占8字节,范围是-9223372036854775808-9223372036854775807
long i4=40L;//要定义long类型要在数字后+L
java中整数是用进制表示的二进制的数以0b开头,八进制以0开头,十六进制以0x开头
int i =10;//用十进制表示
int a=010;//用8进制表示
int b=0b10;//用二进制表示
int c=0x10;//用十六进制表示
System.out.println("i="+i);
System.out.println("a="+a);
System.out.println("b="+b);
System.out.println("c="+c);
运行结果如下:
浮点类型
float占4字节
float f=40.20f;//要定义float要在小数后+f
double占8字节
double f1=50.50;
浮点类型在运行过程中会丢失精度,所以比较大小时不推荐使用浮点类型。
字符类型
char占2字节
char c='a';
字符的本质是数字,字符对应一个Unicode值,比如:'a’代表97
布尔类型
占1位它只有ture和false两个值(表示真假)
boolean flag=true;//(真)
boolean flag=flase;//(假)
引用类型
类,接口,数组
字节的概念
位(bit):是计算机内部数据储存的最小单位,11001100是一个二进制是他有8位
字节(byte):是计算机处理数据的基本单位,一般用B表示
1byte=8bit一字节等于8位
类型转换
类型转换的优先级是:byte-short-char-int-long-float-double
优先级高的转优先级低的要强转
java中类型转换分为强制类型转换和自动类型转换
强制类型转换的格式:类型名 变量名 赋值符 (要转换的类型) 常量或变量名
int i = 10;
float f=(float)i;
上面代码原本i是整形10,然后强转成了浮点型
运行的结果也是浮点型
强转时有可能精度会丢失
double i=10.25;
int a=(int)i;
原本i是10.25强转成int就丢失精度变成了10
转换时要注意数值不能溢出
int q=10_0000_0000;//数字之间可以用下划线分割
int y =20;
int i =q*y;
System.out.println(i);//如果直接这样计算会输出-1474836480
所以数字较大时可以将其中一个数强转
int q=10_0000_0000;
int y =20;
long i =(long)q*y;
System.out.println(i);
这样就可以输出本来想得到的得数
变量
概念:可以变化的量
格式:数据类型 变量名=值
int i = 10;
float a =10.3f;
char ch = 'a';
String type="abc";
注意点
每个变量都有类型,可以是基本类型可以是引用类型
变量名必须是合法的标识符
变量声明是一条完整的语句,所以必须以;结束
变量类型
- 类变量
- 实例变量
- 局部变量
局部变量只能在一个代码块内生效
要是出了代码块使用局部变量程序不运行
变量必须声明和初始化
int i = 10;
System.out.println(i);
int a;
System.out.println(a);
因为a的值没有初始化,所以程序跑不起来
实例变量:从属于对象
int a;
String name;
class1 class1 = new class1();以自定义类型定义的变量
System.out.println(class1.a);//因为没有初始化,所以输出的值是0
System.out.println(class1.name);//输出null
实例变量,如果不对变量进行初始化,这个类型默认值是0 0.0布尔值默认false除了基本类型其余的默认值都是null
类变量
static+类型+变量名=值
即使在方法外面,也可以在方法里面调用
常量
常量:初始化后值就不可以改变了
final 常量名=值;
final PAI=3.1415
常量名用大写
变量命名规则
所有变量,方法,类名,要有意义,不能随便起
类成员变量:首字母小写和驼峰原则:mouthDay 第一个字母小写,第二个单词开始的第一个字母大写
局部变量:首字母小写和驼峰原则
常量:大写字母和下划线PAI_MAX
类名:首字母大写和驼峰原则
方法名 :首字母小写和驼峰原则
运算符
java支持的运算符
算术运算符:±*/%++ –
赋值运算符:=
关系运算符:>,<,<=,>=,==,!=
逻辑运算符:&& || !
位运算符&,|,^,~,>>,<<,>>>
条件运算符: ? :
扩展赋值运算符:+=,-=,/=,*=
算数运算符
int a = 10;
int b = 20;
int c = 30;
System.out.println(a+b);
System.out.println(a-c);
System.out.println(b*c);
System.out.println((float)a/b);
long a=1134657845654L;
int b=100;
short c=10;
byte d=5;
System.out.println(a+b+c+d);
System.out.println(b+c+d);
System.out.println(c+d);
在计算时如果有long类型,结果就是long类型,否则都是int类型
关系运算符
关系运算符返回的结果是布尔值(真/假)
自增自减
前置±先使用后±,后置±,先±后使用
int a=2;
int b =a++;//先将a赋值给b,然后自增1
int c=++a;//先自增1,然后赋值给b
System.out.println(a);
System.out.println(b);
System.out.println(c);
最后的运行结果就是4 2 4
逻辑运算符
&&(与)||(或)!(非)
&&:符号两边都为真结果才为真,否则都为假
||符号两边只要有1和位真或者两个都为真结果就为真
!取真为假,取假为真
短路求值
在&&运算符中,左边的值为假,那么结果就为假,右边的值不进行计算
int c = 5;
boolean a=(c<2)&&(++c<10);//因为c<2为假,所以后面的数不进行计算,那么c的值也是不会发生改变的
System.out.println(c);
System.out.println(a);
位运算操作符
a=0010 1100;
b=0000 1010;
a&b=00001000;//(只有两个数都是1才会取1)
a|b=0010 1110;//(两个数有一个为0就取0)
a^b=0010 0110//(两个数相同就为0,不同就为1)
~b=1111 0101//(取反)
<<向左移>>向右移
条件运算符
a?b:c;
如果a为真,结果为b,a为假,结果为c
int a =10;
int b=20;
int c=a<15?a:b;
System.out.println(c);
因为a=10,所以肯定是小于15的,所以结果就是a
扩展赋值运算符
int a =10;
int b=20;
a+=b//a=a+b==30
a-=b//a=a-b==-10
100;
b=0000 1010;
a&b=00001000;//(只有两个数都是1才会取1)
a|b=0010 1110;//(两个数有一个为0就取0)
a^b=0010 0110//(两个数相同就为0,不同就为1)
~b=1111 0101//(取反)
<<向左移>>向右移
##### 条件运算符
a?b:c;
如果a为真,结果为b,a为假,结果为c
```java
int a =10;
int b=20;
int c=a<15?a:b;
System.out.println(c);
因为a=10,所以肯定是小于15的,所以结果就是a
扩展赋值运算符
int a =10;
int b=20;
a+=b//a=a+b==30
a-=b//a=a-b==-10