目录
前言
学习Java的第二天,理论知识偏多,需要牢记的不少,但还是觉得比较有乐趣,目前还是小白,写博客只是为了总结今天学习的知识,写的不对或者不严谨的地方,希望多多包涵指正.
一.注释
解释说明代码的文字
1.特点
1)提高代码阅读性
2)排错
因此,通常在写代码的时候,要养成写注释的习惯
2.分类
1)普通注释
不能够被解析
a.单行注释
//这是单行注释
b.多行注释
/*
这是
多行注释
*/
2)特殊注释
能够被解析的
/**
这个类是Java的入门,HelloWorld
@author xxx
@version V1.0
*/
二.关键字
在Java语言中,被赋予特点含义的单词就是关键字
1.举例
class :标记需要定义一个类
public:权限修饰符(公共的,公开的),访问权限足够大
static:静态修饰符
void:Java语言中定义方法的一种格式
关键字较多,学到哪个记到哪个就可以
注意:const和goto作为保留字
class :标记需要定义一个类
public:权限修饰符(公共的,公开的),访问权限足够大
static:静态修饰符
void:Java语言中定义方法的一种格式
关键字较多,学到哪个记到哪个就可以
注意:const和goto作为保留字
2.特点
在Java语言中,组成关键字的字母都是小写的
3.特殊标记
高级记事本notepad++,IDEA等针对关键字有颜色标记
class KeyWord{
//main方法,是程序的入口,能够jvm识别并执行main方法,代码从上而下依次加载
public static void main(String[] args){
//输出语句
System.out.println("Java中的关键字组成字母都是小写") ;
}
}
三.标识符
给类,变量,接口,方法,以及常量等起名字的字符序列
1.标识符的组成规则
1)英文的26个字母(大小写)
2)可以是数字
3)可以美元符号 $
4)可以是下划线 _
2.标识符的注意事项
1)数字不能开头
2)Java严格区分大小写
3)不能有其他符号出现如:#,空格等
4)起名字不能是java中 的关键字
3.给类/接口起名字
1)单个单词
首字母大写,其余小写
举例:
//学生类
class Student{
//单个单词:首字母大写,其余小写
}
2)多个单词
大驼峰命名法:每个单词的首字母大写,其余小写
举例:
//HelloWorld类
class HelloWorld{
//多个单词:大驼峰命名法:每个单词的首字母大写,其余小写
}
4.给变量/方法起名字
1)单个单词
字母全部小写
//单个单词字母全部小写
//举例
int price = 199 ; //商品价格 int类型:整数默认
2)多个单词
小驼峰命名法:第一个单词字母全部小写,从第二个单词开始,每个单词首字母大写,其余小写
/*多个单词
小驼峰命名法:第一个单词字母全部小写,从第二个单词开始,每个单词首字母大写,其余小写
*/
//举例
//定义一个字符串变量
String userName = "admin" ;
//方法
checkUserName()
5.给常量起名字
1)单个单词
字母全部大写
//单个单词:字母全部大写
//举例:
HELLO=100;
2)多个单词
每个单词字母全部大写,单词和单词之间使用下划线_隔开
//多个单词:每个单词字母全部大写,单词和单词之间使用下划线_隔开
//举例自定义:
HELLO_WORLD =100;
PUBLIC_TALK = 200;//公聊
PRIVATE_TALK = 300 ; //私聊
四.变量
在程序执行过程中,其值不断发生改变的量,称为变量
1.定义变量的三要素:
1)数据类型
2)变量名
满足标识符的规则
3)初始化值
2.定义变量的格式
1)格式1
数据类型 变量名 = 初始化值;
//数据类型 变量名 = 初始化值;
int a = 10;//将10赋值int类型的变量a
2)格式2
数据类型 变量名;
变量名 = 初始化值;
/*数据类型 变量名;
变量名 = 初始化值;
*/
int a ;//定义int类型的变量a
a = 10;//将10赋值给a
3.数据类型的划分
1)基本数据类型
整数类型
byte:字节类型 占1个字节 (1k=8bit) 范围:-128-127(必须记住)
//byte字节类型
byte b = 100 ;
b = 120 ;//重新赋值
System.out.println("b="+b) ;
short:短整型 占2个字节
//short短整型
short s = 150 ;
s = 100 ;
System.out.println("s="+s) ;
int:整数默认类型 占4个字节(使用最多)
//以后需求没有明确数据类型,都默认使用int
int i = 1000 ;
i = 10000 ;
System.out.println("i="+i) ;
long:长整型类型 占8个字节
int i = 10000000000000;//DataTypeDemo.java:82: 错误: 过大的整数: 10000000000000
System.out.println("i="+i) ;
//当这个数据的值已经超过了int类型的最大值,那么报错,此时需要使用long 长整型
//long类型的值后面加入L或者l
long l = 10000000000000L;
System.out.println("l="+l) ;
浮点类型
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) ;
double:双精度
//double类型(浮点类型默认)
//本身就定义double类型
double d = 3.14 ;
d = 13.42 ;
System.out.println("d="+d) ;
字符类型
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) ;
布尔类型
boolean:布尔类型
//boolean类型
boolean bool = true ;
bool = false ;
System.out.println("bool="+bool) ;
2)引用数据类型(面向对象会讲)
4.数据类型转换
1)隐式类型转换(默认类型提升)
//1)隐式类型转换(默认类型提升)
//boolean不会参与运算
/*byte,short,char三者之间不会相互转换
但是一旦参与运算,优先提升int(考点),long,float,double....*/
boolean不会参与运算
byte,short,char三者之间不会相互转换,但是一旦参与运算,优先提升int(考点),long,float,double....
需求:
int类型变量a,初始化3 ;
byte类型变量b,初始化值4 ;
这两个变量相加,结果是多少?
int类型接收
/*
注意事项:变量运算,要考虑数据类型!
byte,short,char三者之间不会相互转换,但是一旦参与运算,优先提升int(考点)
*/
class DataTypeDemo{
public static void main(String[] args){
//int类型变量a,初始化3 ;
//byte类型变量b,初始化值4 ;
int a = 3 ;
byte b = 4 ;
//定义一个结果变量,int类型接收最终的值
int result = a + b ; //将b这个类型---->int类型的4
System.out.println("result:"+result) ;
}
}
运算过程
int类型4个字节,4个字节是32bit
int a = 3------>二进制00000000 00000000 00000000 00000011
byte类型1个字节,8个bit位
byte b = 4----->二进制00000100
byte,short,char三者之间不会相互转换,但是一旦参与运算,优先提升int
整数的原码,反码,补码是相同的
最高符号位 数值位
补码 0 0000000 00000000 00000000 00000011
补码 0 0000000 00000000 00000000 00000100
+
-----------------------------------------------------
补码 0 0000000 00000000 00000000 00000111
反码 0 0000000 00000000 00000000 00000111
原码 0 0000000 00000000 00000000 00000111
= 7
2)显式类型转换(强制类型转换)
大数据类型---->小数据类型,因为可能会损失精度!有的时候,必须使用强转!
格式
目标数据类型 变量名 = (目标数据类型)(初始化值)
需求:
int类型变量a,初始化3 ;
byte类型变量b,初始化值4 ;
这两个变量相加,结果是多少?
byte类型接收
/*
注意事项:变量运算,要考虑数据类型!
byte,short,char三者之间不会相互转换,但是一旦参与运算,优先提升int(考点)
*/
class DataTypeDemo{
public static void main(String[] args){
//int类型变量a,初始化3 ;
//byte类型变量b,初始化值4 ;
int a = 3 ;
byte b = 4 ;
//定义一个结果变量,byte类型接收最终的值
byte result = a + b ; //将b这个类型---->int类型的4
System.out.println("result:"+result) ;
}
}
/*
运行结果:
不兼容的类型: 从int转换到byte可能会有损失
=右边:byte类型b先提升为int类型,和int类型的a进行计算----结果int类型 4个字节
=左边:byte类型接收,1个字节
*/
这时,需要进行强制转换
class DataTypeDemo{
public static void main(String[] args){
//int类型变量a,初始化3 ;
int a = 3 ;
//byte类型变量b,初始化值4 ;
byte b = 4 ;
//套格式
//目标数据类型 变量名 = (目标数据类型)(初始化值) ;
byte result = (byte)(a+b) ;
System.out.println("result:"+result) ;
}
}
运算过程
int类型4个字节,4个字节是32bit
int a = 3------>二进制00000000 00000000 00000000 00000011
byte类型1个字节,8个bit位
byte b = 4----->二进制00000100
byte,short,char三者之间不会相互转换,但是一旦参与运算,优先提升int
整数的原码,反码,补码是相同的
最高符号位 数值位
补码 0 0000000 00000000 00000000 00000011
补码 0 0000000 00000000 00000000 00000100
+
-----------------------------------------------------
补码 0 0000000 00000000 00000000 00000111
反码 0 0000000 00000000 00000000 00000111
原码 0 0000000 00000000 00000000 00000111
由于运用了强制转换 byte result = (byte)(a+b) ;
因此将前面三个字节截取
(00000000 00000000 00000000) 00000111
留下一个字节--->00000111
=7-------byte类型的7