目录
注释
用特殊符号标注
对代码进行说明,不属于程序
//单行注释 ,ctrl+/ 快捷键
/* */ 多行注释,ctrl+shift+/ 快捷键 ctrl+shift+\取消注释
/** */文档注释 ,为类,方法,属性功能,进行说明,调用时可以说明
关键字
被java语言赋予了特殊含义的单词,不能用于标识符的命名,所有字母都是小写,例如public,static等
保留字
现有java版本还未使用但不能作为标识符命名的单词,例goto,const
标识符
java中为包,类,方法,变量命名使用的字符---标识符
即程序中我们自己可以命名的名称---标识符
命名规则:
强制规则:
组成:大小写字母,数字,_ $
数字不能开头
中间不允许出现空格
区分大小写
长度不限制
不能是关键字,但是可以包含关键字
约定:
类名首字母大小写 多个单词 每个单词首字母大写 (大驼峰 UserInfo)
包名全部小写 com.huawei com.pinyougou
变量名,方法名首字母小写 多个单词 第二个单词首字母大写(小驼峰 userName)
常量全部大写 USER_NAME
见名知意
变量
变量是程序中最基本的存储单位,其存储值是可以变的
变量本质上是一块内存空间,先在内存中申请一块空间,然后为此空间赋值
使用前需要先声明并赋值(运算前一定需要赋值)
语法: (修饰符 static .......)数据类型 变量名
public class Demo4 {
public static void main(String[] args){
//声明并赋值
int a=5;
int b=10;
System.out.print(a+b);
//先声明后赋值
int c;
c=a+b;
//同种数据类型可以一起声明并赋值
int x=1,y=2,z=3;
}
}
数据类型
程序中对每种数据都定义了明确的数据类型,也为不同的数据类型分配了不同的内存大小与存储结构
基本数据类型
使用8个关键字声明的8种数据类型
①整数
byte,short,int,long
整数类型有固定的表数范围和字段长度
/*
* byte类型占用1个字节
* 最大值为127
* */
byte a=127;
/*
short类型占用两个字节
最大值为32767
*/
short b=32767;
System.out.println(Short.MAX_VALUE);
/*
int类型占用4个字节
最大值为2147483647
*/
int c=2147483647;
System.out.println(Integer.MAX_VALUE);
/*
long类型占用8个字节
java中整数的字面量默认是Integer
若声明long类型 且字面量大于int范围则需要在末尾加L
*/
long d=214748364711111L;
System.out.println(Long.MAX_VALUE);
//int=0b11 0b开头表示二进制
//int=011 0开头表示八进制
//int=0x11 0x开头表示16进制
②浮点型
float,double
浮点类型也有固定的表数范围和字段长度
除此之外浮点类型有两种表现形式
十进制数形式,例如: 3.14 314.0 科学记数法形式,如 3.14e2 3.14E2
/*
浮点型数据的字面量是double类型的
声明float类型的数据,要在字面量后面加f或者F
单精度 4个字节
*/
float a=10.123f;
/*
double类型
双精度 8个字节
*/
double d=10.123456789123456789;
③逻辑型(布尔)
boolean
boolean类型用于逻辑计算,一般用于程序流程控制,java中boolean值只能取true和flase
/*
布尔逻辑类型
*/
boolean bo=true;
boolean bo1=a>d;
④字符型
char
char类型为单个字符,用单引号表示
/*
char字符型
表示单个字符,用单引号表示, 双引号表示字符串
计算机能够显示字符的原理是底层有一个对照表(编码表)
String类型数据在存入的时候是用字符数组存入的
例如 a----97-----二进制数
Java表示字符的时候,使用的unicode编码(包含了全球各国的语言 符号,万国码,unicode是兼容ASCII码的)
utf-8是一种变长的用于在文件,传输时使用的具体编码表
一个英文字母表示1个字节,一个中文汉字表示3个字节
*/
char e='a';
String f="abc";
引用数据类型
入门阶段可暂时理解为除了八种关键字表示的数据类型以外的数据类型,例如有枚举类型,String
基本数据类型转换
除了boolean类型不能与其他类型转换外,byte short int long float double char 类型都是数值型,可以进行相互转换
/*
基本数据类型转换
除了boolean类型不能与其他类型转换外
byte short int long float double char 类型都是数值型,可以进行相互转换
转换规则:
容量小--->容量大 默认自动进行转换
容量大--->容量小 默认不能转换,可进行强制转换,但是肯会造成数据溢出,精度降低等问题
*/
//小转大
byte a= 125;
short b=a;
//大转小,数据溢出
int c=321;
byte d=(byte)c;
System.out.println(d);
//输出结果65,原数据类型比特位超出现数据类型导致数据溢出
//精度降低
float e=19.1f;
long f=(long)e;
System.out.println(f);
//输出结果19.小数位的数丢失精度降低
//数据混合运算数据类型出错
long g=c+e;//c+e为float类型数据比long类型要大
运算符
算术运算符:
+,-,*,/,%,++,--运算对象为数值与数值,数值与字符
++自增,--自减(自增自减是操作,变量的值会发生改变)
//算数运算符
int a=10;
float b=5;
System.out.println(a+b);//输出结果15.0,运算结果转化为了float类型
System.out.println(a+'a');//'a'在运算时自动转化为数值型
int y=a++ + 1;
int x=++a + 1;
System.out.println(y);//混合运算时,++在后先进行运算后++,运算结果为11
System.out.println(x);//混合运算时,++在前先进行++后运算,运算结果为13(上一步自增过)
字符连接运算符:+
//字符连接运算符
int c=4;
System.out.println(c+"abc");//结果为4abc
关系比较运算符:
< ,>, >= ,<= 运算对象为数值与数值,数值与字符
==,!= 运算对象为数值与数值,数值与字符,逻辑值与逻辑值,引用类型与引用类型
//关系比较运算符
System.out.println(10==5);//结果为flase
System.out.println(10!='a');//结果为true
System.out.println(true==true);//结果为true
System.out.println("abc"=="abc");//结果为true
逻辑运算符
&逻辑与,|逻辑或,!逻辑非,^逻辑异或,&&短路与,短路或||
运算对象为逻辑值或者返回逻辑值的表达式
int a=10,b=5,c=7;
//逻辑与& flase & 表达式 后面的表达式会被执行
System.out.println(a>b & b<c);//true & true=true
System.out.println(a>b & b>c);//true & flase=flase
System.out.println(a<b & ++b<c);//flase & flase=flase
System.out.println(b);//结果为6后面的表达式被执行
//短路与&& flase && 表达式 后面的表达式不会被执行
System.out.println(a>b && b<c);//true && true=true
System.out.println(a>b && b>c);//true && flase=flase
System.out.println(a<b && ++b>c);//flase && flase=flase
System.out.println(b);//结果为6代表后面的表达式没有被执行,因为前面b已经执行过自增
故b的值在这一步没有改变
//短路或 true || 表达式 后面的表达式不会被执行
System.out.println(a>b || b<c);//true || true=true
System.out.println(a>b || ++b>c);//true || flase=true
System.out.println(a<b || b>c);//flase || flase=flase
System.out.println(b);//结果为6代表后面的表达式没有被执行,因为前面b已经执行过自增
故b的值在这一步没有改变
//逻辑异或^
System.out.println(a>b ^ b<c);//true ^ true=flase
System.out.println(a>b ^ ++b>c);//true ^ flase=true
System.out.println(a<b ^ b>c);//flase ^ flase=flase
//逻辑非!
System.out.println(!(a>b));//!true=false
赋值运算符
赋值运算符 = 其中涉及数据类型的转换(自动或强制) 扩展赋值运算符 +=,-=,*=,/=,%=
//赋值运算符
short s=2;
/*
扩展赋值运算符
*/
System.out.println(s+=2);//结果为4等价于s=s+2,其余四个类似
//s+=2与s=s+2的区别
s=(short)(s+2);//s(short型)+2(int型)混合运算后结果为int型,需要转换数据类型
s +=2;//隐式转换数据类型
s*=0.1;//隐式转换为double类型
System.out.println(s);//结果为0
s++;
System.out.println(s);//结果为1
条件运算符
(条件表达式)?表达式1:表达式2 该运算符返回一个表达式的值
System.out.println((10>5)?"abc":"cba");//若条件成立返回第一个表达式的值,否则返回第二个
位运算符
<< 左移,>>右移,>>>无符号右移 ,& ,|,^,~
利用&和^可以完成判断偶数与交换数值的功能
/*
位运算符
<< 左移,>>右移,>>>无符号右移
*/
int x=4,y=3;
/*
x=0000 0100 4右移一位
0000 0010 2
*/
System.out.println(x>>1);//结果为2
System.out.println(6>>1);//结果为3
/*
x=0000 0100 4 左移一位
0000 1000 8
*/
System.out.println(x<<1);//结果为8
System.out.println(x<<2);//结果为16
/*
无符号右移
a= 1111 1011 -3 无符号右移
0111 1101 2147483646 无符号右移不会保留符号位,移位后会给高位补0
*/
byte a =-3;
System.out.println(a>>1);//结果为-2
System.out.println(a>>>1);//结果为2147483646
/*
&位运算 位运算的应用 若x&1==0为true则x为偶数
0000 0100 4
& 0000 0011 3
0000 0000 0
*/
System.out.println(x&y);
/*
|或运算
0000 0100 4
| 0000 0011 3
0000 0111 7
*/
System.out.println(x|y);
/*
^异或运算
0000 0100 4
^ 0000 0011 3
0000 0111 7
*/
System.out.println(x^y);
//利用异或运算可以交换两个数的值
/* x=x^y;
y=x^y;
x=x^y;
System.out.println(x);//3
System.out.println(y);//4*/
/*
~非运算
~(0000 0100) -5
*/
System.out.println(~x);
控制台输入
控制台输入即是交互式的向程序中输入内容,但在实际上程序是用不到
Scanner类的next()方法用以 取得用户输入的字符串; nextInt()将取得的输入字 符串转换为整数类型;
//创建一个输入对象
Scanner sc=new Scanner(System.in);
System.out.println("你是谁?");
String name=sc.next();//程序执行到next()方法时进入阻塞状态,向程序中输入值后,按下回车表示输入完成
System.out.println("qq号");
int qq=sc.nextInt();
System.out.println(name);
System.out.println(qq);