1.注释
Java中的注释:就是解释说明代码的文字,为了提高代码的阅读性
分类:
普通注释:不能够被解析的
单行注释 //
多行注释 /星 星/
特殊注释
文档注释 /星星 星/
特点:1)能够提高代码的阅读性2)还可以排错
/**
这个类是Java的入门,HelloWorld
@author wangwanting
@version V1.0
*/
class Apple{
/*
这是一个main方法,是程序的入口,能够jvm识别并执行main方法,代码从上而下依次加载!
*/
public static void main(String[] args){
int applePrice=10; //定义了一个苹果价格的整型变量
System.out.println("今日苹果价格:"+applePrice) ;
}
}
2.关键字
在Java中被赋予特定含义的单词就是关键字
class:标记需要定义一个类
public:权限修饰符(公共的,公开的),访问权限足够大
static:静态修饰符
void:Java语言中定义方法的一种格式
class KeyWord{
public static void main(String[] args){
System.out.println("Java中的关键字组成字母都是小写") ;
}
}
3.标识符
就是给类,变量,接口,以及常量等起名字的字符序列,要做到见名知意
标识符的组成规则:
1)英文的26个字母(大小写)
2)可以是数字
3)可以是美元符号$
4)可以是下划线_
注意事项:
1)但是数字不能开头
2)Java严格区分大小写
3)不能有其他符号出现
4)起名字不能是Java中的关键字
给类/接口起名字:
单个单词-------首字母大写即可,其余小写
举例: class Student{}学生类
多个单词-------每个单词的首字母都大写,其余小写(大驼峰命名法)
举例: class HelloWorld{}
给变量/方法起名字:
单个单词-------字母全部小写
举例: int price=199;//商品价格 int类型:整数默认
方法的命名和变量一样: main()
多个单词--------第一个字母全部小写,从第二个单词开始,每个单词首字母大写,其余小写(小驼峰命名法)
举例:定义一个字符串变量 String userName="admin";
方法: checkUserName()
给常量起名字:
单个单词:字母全部大写
举例: HELLO
多个单词:每个单词字母全部大写,单词和单词之间使用下划线_隔开
举例: HELLO_WORLD=100;
class MakeNameDemo{
public static void main(String[] args){
//定义变量
//int 1a = 10 ; //不能以数字开头
//System.out.println(a) ;
//int public = 100 ; //不能是Java中的关键字
//System.out.println(public) ;
//int _price = 100 ; //下划线可以开头,不建议,最好的方式前面加一个单词!
//System.out.println(_price) ;
//int Public = 200 ; java是严格区分大小写,虽然此时变量明不是关键字,这种写法不建议,一定"见名知意"
int productPrice = 200 ;
System.out.println("productPrice:"+productPrice) ;
}
}
4.常量
在程序执行过程中,其值永远是固定的
分类:
1)字面值常量
A:字符串常量:使用双引号括起来的内容,就是字符串常量
"高圆圆","helloworld","今天天气真不错"
B:字符常量:使用单引号括起来的单个内容,成为字符常量
'a','A','0'
'ab' 错误的写法
字符一旦参与运算的时候,此时键盘上的每一个字符都对应ASCII码表的整数值
'A'---65代表大写字母字符
'a'---97代表小写字母字符
'0'---48代表数字字符
C:整数常量---整数默认十进制 进制也属于常量的范畴
100,65,78...
D:小数常量
13.24
E:布尔常量 true/false
2)自定义常量 public static final 数据类型 变量名=值;
class ConstantDemo{
public static void main(String[] args){
//测试
//字符串常量
System.out.println("helloworld,helloJavaEE") ;
System.out.println("-----------------------------------------") ;
//字符常量
System.out.println('A') ;
System.out.println('我') ;
System.out.println('a') ;
System.out.println('0') ;
//System.out.println('ab') ; 错误写法
System.out.println("-------------------字符参与运算--------------------") ;
System.out.println('A'+1) ;
System.out.println('a'+1) ;
System.out.println('0'+1) ;
System.out.println("-----------------------整数常量和小数常量------------------------------") ;
System.out.println(100) ;
System.out.println(3.14) ;
System.out.println("-----------------------布尔常量------------------------------") ;
System.out.println(true) ;
System.out.println(false) ;
System.out.println("-----------------------空常量null------------------------------") ;
//引用类型(面向对象部分讲)的默认值就是null
//String:jdk提供的 代表字符串
String str = null ;
System.out.println(str) ;
}
}
进制 :数据进位的一种方式
x进制,逢x进一
进制越大,表现形式越短
二进制:由0,1组成,表示的时候0B/0b
八进制:由0...7组成,表示的时候以0开头
十进制:整数默认进制
十六进制:由0...9,a,b,c,d,e,f组成,表示的时候以0x开头
任意进制转十进制:位权展开法系数*基数的权次幂 相加的结果
系数:就是每个位上的数据本身
基数:从X进制------十进制,基数就是X
权限次幂:就是从右到左编号,并且从0开始,给基数的次幂进行编号
二进制0B100------------>十进制 基数就是2
系数:1,0,0
基数:2
权次幂:最大取到2
=1*2^2+0*2^1+0*2^0
=4
八进制0100------------>十进制 基数就是8
八进制的0只是表示它是八进制
系数:1,0,0
基数:8
权次幂:最大去到2
=1*8^2+0*8^1+0*8^0
=64
十六进制0x100------------>十进制 基数就是16
系数:1,0,0
基数:16
权次幂:最大去到2
=1*16^2+0*16^1+0*16^0
=256
十进制转换成任意进制:除基取余,除到商为0为止,然后余数反转
8421码:是进制一种快速转换法,8421码称为"BCD码的一种"
每个位上的二进制数据都是1,每个二进制数据都对应一个十进制
1 1 1 1 1 1 1 1
128 64 32 16 8 4 2 1
二进制----->十进制
0B101011
=30+0+8+0+2+1=43
十进制------>二进制
100=64+32+4
=0B1100100
需要将x进制----y进制
方式1:分布
1)将x进制---十进制
2)十进制---y进制
方式2:使用进制的概念
二进制---八进制
八进制就是在二进制的基础上,从右到左,每三个比特位一组,分别计算出每个位上的十进制
-->从左到右排列起来---八进制
原码反码补码
正整数的原码反码补码相同
负数的反码:在原码的基础上,最高符号位不变,数值位按位取反,就是0变1,1变0
负数的补码:在反码的基础上,最高符号位不变,数值位的末尾+1
负数的原码除符号位以外,数值位取反得到反码,反码加1为补码
负数的补码减1为反码,反码除符号位以外,数值位取反为原码
已知某数X的原码为0B10110100,试求X的补码和反码。
原码
最高符号位 数值位
1 0110100
反码
1 1001011
补码
+ 1
-----------------------------------------
1 1001100已知某数X的补码0B11101110,试求其原码。
补码----反码 (负数,就是补码的末尾-1)
补码
最高符号位 数值位
1 1101110
- 1
-------------------------------
1 1101101 反码
1 0010010 原码
5.变量
在程序执行过程中,其值不断发生变化改变的量
定义变量的三要素:
1)数据类型
2)变量名:满足标识符的规则
3)初始化值;
数据类型 变量名 = 初始化值;
或者
数据类型 变量名;
变量名= 初始化值;
数据类型的划分:
1)基本数据类型:四大类8大种
整数类型:4种 :默认类型int
byte:字节类型 所占的字节数1个 (1k=8bit) 范围:-128-127
short:短整型 占 2个字节
int:整数默认类型 占4个字节(使用最多) -2^31 - 2^31 -1
long:长整型类型 占8个字节
long类型:实际开发中----定义系统时间毫秒值
long定义变量的时候,初始化值的后面带上标记l或者L
浮点类型:默认类型double双精度
float:占4个字节 定义变量的时候,初始化值后面 带上标记F或者f
double:占8个字节(默认类型)
字符类型:char
占2字节
布尔类型:boolean
占1个字节
上面的基本数据类型中,boolean永远不会参与运算的,最终要么是true,要么就是false
(逻辑判断都需要boolean)
2)引用数据类型: 数组,类,接口
class DataTypeDemo{ public static void main(String[] args){ //测试基本数据类型 //字节类型byte byte b = 100 ; b = 120 ;//重新赋值 //byte b = 120 ; System.out.println("b:"+b) ; System.out.println("-------------short短整型----------------") ; short s = 150 ; s = 100 ; System.out.println("s:"+s) ; System.out.println("-------------整数的默认类型int----------------") ; //以后需求没有明确数据类型,都默认使用int int i = 1000 ; i = 10000 ; System.out.println("i:"+i) ; System.out.println("-------------长整型long----------------") ; //int ii = 10000000000000;//DataTypeDemo.java:82: 错误: 过大的整数: 10000000000000 //System.out.println("ii:"+ii) ; //当这个数据的值已经超过了int类型的最大值,那么报错,此时需要使用long 长整型 //long l = 10000000000000 ;//定义long类型,在值的后面不带标记,那么jvm认为int,但是值已经超过了范围 //long类型的值后面加入L或者l long l = 10000000000000L; System.out.println("l:"+l) ; System.out.println("-------------float类型----------------") ; //浮点类型默认是double,jvm在编译的时候,认为12.56就是一个double类型值,但是此时变量类型float //Java语法规定:在定义float类型的值的后面加上F或者f进行标记,它是一个单精度 //float f = 12.56 ;//不兼容的类型: 从double转换到float可能会有损失 float f = 12.56F; System.out.println("f:"+f) ; System.out.println("-------------double类型(浮点类型默认)----------------") ; //本身就定义double类型 double d = 3.14 ; d = 13.42 ; System.out.println("d:"+d) ; System.out.println("-------------字符类型char----------------") ; char ch = 'A' ; //char ch2 = 'abc' ;//错误的写法 System.out.println("ch:"+ch) ; ch ='a' ; System.out.println("ch:"+ch) ; ch ='0' ; System.out.println("ch:"+ch) ; ch = '国' ; System.out.println("ch:"+ch) ; System.out.println("-------------boolean类型----------------") ; boolean flag = true ; flag = false ; System.out.println("flag:"+flag) ; } }
Java中的隐式类型转换(默认类型提升)
boolean永远不会参与运算的
byte,short,char三者之间不会相互转换,但是一旦参与运算,优先提升intclass DataTypeDemo2{ public static void main(String[] args){ //int类型变量a,初始化3 ; //byte类型变量b,初始化值4 ; int a = 3 ; byte b = 4 ; //定义一个结果变量,接收最终的值 int result = a + b ; //将b这个类型----int类型的4 System.out.println("result:"+result) ; } }
Java中显示转换:就是大数据类型---->小数据类型开发场景下,一般情况下,不建议使用"强制类型转换",因为可能会损失精度!有的时候,必须使用强转!
目标数据类型 变量名 = (目标数据类型)(初始化值) ;class DataTypeDemo3{ public static void main(String[] args){ //int类型变量a,初始化3 ; int a = 3 ; //byte类型变量b,初始化值4 ; byte b = 4 ; //结果使用byte类型接收 //byte result = a + b ; // 不兼容的类型: 从int转换到byte可能会有损失 //=号右边:byte类型 b先提升为int类型,和int类型的a进行计算----结果int类型 4个字节 //=左边:byte类型接收,1个字节 //System.out.println("result:"+result) ; //套格式 //目标数据类型 变量名 = (目标数据类型)(初始化值) ; byte result = (byte)(a+b) ; System.out.println("result:"+result) ; } }