注释
-
平时我们编写代码,在代码量比较少的时候,我们还可以看懂自己写的,但是当项目当项目结构一旦复杂起来,我们就需要注释了
-
注释并不会被执行,是给我们写代码的人看的
-
书写注释是一个非常好的习惯
-
平时写代码一定要注意规范
-
Java中的注释有三种:1.单行注释
2.多行注释
3.文档注释
操作代码:
public class HelloWorld {//注释
public static void main(String[] args) {
System.out.println("Hello,World!");
}
//单行注释
//这是一个单行注释
//多行注释
/*这
* 是
* 一
* 个
* 多
* 行
* 注
* 释*/
//文本注释
/**
*
*/
}
-
Annotations 注解
Comments 注释
标识符
-
关键字
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 -
Java所有的组成部分都需要名字,类名、变量名以及方法名都被称为标识符
标识符注意点
-
所有的标识符都应该以字母(A-Z或者a-z),美元符($),或者下划线(_)开始
-
首字母之后可以是字母(A-Z或者a-z),美元符($),下划线(_)或数字的任何字符组合
-
不能使用关键字作为变量名或方法名
-
标识符是大小写敏感的
-
合法标识符举例:age,$salary,_value, __1_value
-
非法标识符举例:123abc,-salary,#abc
-
可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音,很Low
-
操作代码:
public class Demo01 {//标识符和关键字
public static void main(String[] args) {
String Ahello="Ashley";
String hello="Ashley";
String $hello="Ashley";
String _hello="Ashley";
String _$="Ashley";
//错误示例
//String 1hello="Ashley";
//String #hello="Ashley"
//String *hello="Ashley";
//String class="hello";
//标识符是大小写敏感的
String Man="Xu";
String man="Xu";
//可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音,很Low
String name="Ashley";
String mingzi="Ashley";//不建议
String 王者荣耀="王者";
//String 王者荣耀="青铜";
System.out.println(王者荣耀);
}
}
数据类型
-
强类型语言
要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用
-
弱类型语言
要求变量的使用要符合规定,不是那么严格
-
Java的数据类型分为两大类
1.基本类型(primitive type)
分为: byte占1个字节范围:-128-127
整数类型 short占2个字节范围:-32768-32767
int占4个字节范围:-2147483648-2147483647
数值类型 long占8个字节范围:-9223372036854775808-9223372036854775807
浮点类型 float占4个字节
double占8个字节(常用)
字符类型char占2个字节
boolean类型:占1位其值只有true和false两个
-
操作代码:
-
public class Demo02 {//数据类型
public static void main(String[] args) {
//八大基本数据类型
//整数
int num1=10;//最常用
byte num2=20;
short num3=30;
long num4=30L;//Long类型要在数字后面加个L
//小数:浮点数
float num5=50.1F;//float类型要在数字后面加个F
double num6=3.141592653589793238462643;
//字符类型
char name='颂';//只能写一个字符
//字符串,String不是关键字,它是一个类
//String namea="颂yy";
//布尔值:是非
boolean flag=true;
//boolean flag=false;
}
}
-
2.引用类型(reference type)
分为:
类
数组
接口
什么是字节
-
位(bit):是计算机 内部数据 储存的最小单位,11001100是一个八位二进制数
-
字节(byte):是计算机中 数据处理 的基本单位,习惯上用大写的B来表示
-
1B(byte,字节)=8bit(位)
-
字符:是指计算机中使用的字母、数字、字和符号
-
1bit表示1位
-
1Byte表示1个字节 1B=8b
-
1024B=1KB
-
1024KB=1M
-
1024M=1G
-
1024G=1TB
数据类型扩展及面试题
-
浮点数表示的字长是有限的,也是离散的,浮点数一般都存在舍入误差,由于很多数字都没有办法精确表示,所以结果只能是个大约数 接近但不等于
最好完全避免使用浮点数进行比较
使用BigDecimal,它是一个数学工具类
-
所有的字符本质还是数字
-
char类型会涉及到编码问题
Unicode编码可以处理各种语言文字,它占了2个字节,最多可以表示65536个字符 早些年大家都用Excel表格,它最长只有2的16次方=65536
Unicode表:例如a=97,A=65,中=20013 U0000-UFFFF 例如:char c3='\u0061'; System.out.println(c3);//运行结果为a
-
转义字符:
1.\t 制表符(相当于空格)
System.out.println("北京\t上海\t广州\t深圳");//运行结果为:北京 上海 广州 深圳
2.\n 换行符3.\\:输出\,“\”表示反斜杠,转译其他字符
System.out.println("Miss\n颂yy");
//运行结果为:
Miss
颂yy
3.\\:输出\,“\”表示反斜杠,转译其他字符
System.out.println("\\");//运行结果为:\
System.out.println("C:\\Windows\\System64\\cmd.exe");
//运行结果为:C:\Windows\System64\cmd.exe
4.\":输出一个"(双引号),单引号类似
System.out.println("\"");//运行结果为:"
5.\r:表示一个回车,使光标回到当前行的行首。如果之前该行有内容,则会被覆盖;
System.out.println("颂yy\r哈喽");
//当使用\r回车时,光标会定到第一个字上,再输出“你好”就会覆盖前面的文字内容,运行结果为:哈喽y
//但在idea中测试的时候是直接把前面“颂yy”替换成后面的“哈喽”,应该和编译器有关
\r 和 \n 一起使用时,回车加换行,就是把 “颂yy” 输出后,再换行输出 “哈喽”
System.out.println("颂yy\r\n哈喽");
//运行结果为:
颂yy
哈喽
-
操作代码:
public class Demo03 {//数据类型扩展及面试题
public static void main(String[] args) {
/*整数拓展:
* 进制
* 二进制(以0b开头)
* 十进制
* 八进制(以0开头)
* 十六进制(以0x开头)
*/
int i=10;
int i2=010;//八进制
int i3=0x10;//十六进制(0-9 A-F 16)
System.out.println(i);//运行结果为10
System.out.println(i2);//运行结果为8
System.out.println(i3);//运行结果为16
System.out.println("==================================================================");
//=================================================================================
//浮点数拓展? 银行业务怎么表示? 钱
//=================================================================================
//float
//double
//例一
float f=0.1f;
double d=1.0/10;
System.out.println(f==d);//用==来表示它们是否相等
//运行结果为·false
System.out.println(f);//运行结果为0.1
System.out.println(d);//运行结果为0.1
//例二
float d1=23131313131313f;
float d2=d1 + 1;
System.out.println(d1==d2);//运行出来是true
//两个例子说明浮点数是存在问题的,原因:
//浮点数表示的字长是有限的,也是离散的,浮点数一般都存在舍入误差,由于很多数字都没有办法精确表示
//所以结果只能是个大约数 接近但不等于
//最好完全避免使用浮点数进行比较
//最好完全避免使用浮点数进行比较
//最好完全避免使用浮点数进行比较
//使用BigDecimal,它是一个数学工具类
System.out.println("==================================================================");
//=====================================================================================
//字符拓展
//=====================================================================================
char c1='a';
char c2='中';
System.out.println(c1);//运行结果为a
System.out.println((int)c1);//强制转换//运行结果为97
System.out.println(c2);//运行结果为中
System.out.println((int)c2);//运行结果为20013
//所有的字符本质还是数字
//char类型会涉及到编码问题,Unicode编码可以处理各种语言文字,它占了2个字节,最多可以表示65536个字符
//早些年大家都用Excel表格,它最长只有2的16次方=65536
//Unicode表:例如a=97,A=65,中=20013
//U0000-UFFFF
char c3='\u0061';
System.out.println(c3);//运行结果为a
//转义字符
//\t 制表符
//\n 换行
//.........
System.out.println("Hello\tWorld!");//运行结果为Hello World!
System.out.println("Hello\nWorld!");
System.out.println("==================================================================");
/*运行结果为
* Hello
* World!*/
//
String sa=new String("hello world");
String sb=new String("hello world");
System.out.println(sa==sb);
//运行结果为false
String sc="hello world";
String sd="hello world";
System.out.println(sc==sd);
//运行结果为true
System.out.println("==================================================================");
//对象 从内存分析
//=====================================================================================
//布尔值拓展
//=====================================================================================
boolean flag=true;
if(flag==true){}//这两行代码是一样的:新手
if (flag){}//这两行代码是一样的:老手
//Less is more 代码要精简易读
}
}
类型转换
-
由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换
低---------------------------------------------------------------->高
byte,short,char-->int-->long-->float-->double
-
运算中,不同类型的数据先转化为同一类型。然后进行运算
-
强制类型转换:(类型)+变量名 高---->低
-
自动类型转换: 低---->高
-
注意点: * 1.不能对布尔值进行转换 * 2.不能把对象类型转换为不相干的类型 * 3.在把高容量转换到低容量的时候,强制转换 * 4.转换的时候可能存在内存溢出,或者精度问题!
类型转换操作代码:
public class Demo04 {//类型转换
public static void main(String[] args) {
int i=128;
byte b=(byte) i ;//强制类型转换
//强制转换格式:(类型)变量名 高---->低
System.out.println(i);//运行结果为128
System.out.println(b);//运行结果为-128
//byte MAX_VALUE = 127;导致内存溢出
System.out.println("======================================================");
int a=128;
double d=a;
// 自动转换: 低---->高
System.out.println(a);//运行结果为128
System.out.println(d);//运行结果为128.0
System.out.println("======================================================");
/*注意点:
* 1.不能对布尔值进行转换
* 2.不能把对象类型转换为不相干的类型
* 3.在把高容量转换到低容量的时候,强制转换
* 4.转换的时候可能存在内存溢出,或者精度问题!
*/
System.out.println((int)23.7);//double转int //运行结果为23
System.out.println((int)-45.89f);//float转int //运行结果为-45
//精度问题
System.out.println("======================================================");
char c='a';
int e=c+1;
System.out.println(e);//运行结果为98
System.out.println((char)e);//int转char,运行结果为b
System.out.println("======================================================");
//操作比较大的时候,注意溢出问题
//JDK新特性,数字之间可以用下划线分割,并且下划线不会被输出
int money=10_0000_0000;
System.out.println(money);//运行结果为100000000
int years=20;
int total=money*years;
System.out.println(total);//运行结果为-1474836480,原因:计算的时候溢出了
long total2=money*years;
System.out.println(total2);//运行结果为-1474836480,原因:默认是int,转换成long之前已经存在问题了
long total3=money*((long)years);//先把一个数转换成long,再进行计算,计算结果再转换成long就不会出错了
System.out.println(total3);//运行结果为20000000000
}
}
变量
-
变量是什么:就是可以变化的量
-
Java是一种强类型语言,每个变量都必须声明其类型
-
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
type varName [=value][{,varName[=value]}];
//数据类型 变量名 =值:可以使用逗号隔开来声明多个同类型变量
-
注意事项:
1.每个变量都有类型,类型可以是基本类型,也可以是引用类型
2.变量名必须是合法的标识符
3.变量声明是一条完整的语句,因此每一个声明都必须以分号结束
操作代码:
public class Demo05 { //定义变量
public static void main(String[] args) {
//int a,b,c;不建议这样做
//int a=1,b=2,c=3;不建议
//程序可读性,定义变量
int a=1;
int b=2;
int c=3;
String name="Ashley";
char x='X';
double pi=3.14;
}
}
变量作用域
public class Variable{
static int allClicks=0; //类变量
String str="hello world"; //实例变量
public void method(){
int i =0; //局部变量
}
}
-
类变量:static(从属于类)
public class Demo06 {
static double salary =2500;//类变量 static(从属于类)
public static void main(String[] args) {
//类变量 static
System.out.println(salary);//运行结果为2500.0
}
}
-
实例变量(在类里面,在方法的外面):从属于对象;如果不自行初始化,这个类型的默认值为 0(整数)或0.0(小数)或u0000(字符串);布尔值:默认是false;除了基本类型,其余的默认值都是null
public class Demo06 {
String name;
int age;
public static void main(String[] args) {
//变量类型 变量名字 = new Demo06();
Demo06 demo06 = new Demo06();
System.out.println(demo06.age);//运行结果为0
System.out.println(demo06.name);//运行结果为null
}
}
-
局部变量(是在方法里的,即上面的“{”和下面的“}”之间):在使用之前必须声明和初始化值
public class Demo06 {
public static void main(String[] args) {
int i=10;
System.out.println(i);
}
}
-
操作代码:
public class Demo06 {//变量作用域
// 类变量 static(从属于类)
static double salary =2500;
//在类里面写代码,类里面除了方法,还有属性,属性:变量
//实例变量(在类里面,在方法的外面):从属于对象;
// 如果不自行初始化,这个类型的默认值为 0(整数)或0.0(小数)或u0000(字符串)
//布尔值:默认是false
//除了基本类型,其余的默认值都是null
String name;
int age;
//main方法
public static void main(String[] args) {
//局部变量(是在方法里的,即上面的“{”和下面的“}”之间):在使用之前必须声明和初始化值
int i=10;//局部变量:初始化值
System.out.println(i);
//变量类型 变量名字 = new Demo06();
Demo06 demo06=new Demo06();
System.out.println(demo06.age);
System.out.println(demo06.name);
//类变量 static
System.out.println(salary);
}
//其他方法
public void add(){
}
}
常量
-
常量(Constant):初始化后不能再改变值!不会变动的值
-
所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变
final 常量名=值;
final double PI=3.14;
-
常量名一般使用大写字符
操作代码:
public class Demo07 {//常量
static final double PI=3.14;
//static和final可以互换位置,因为它们是修饰符,不存在先后顺序(变量类型前面的都是修饰符,此处即double前面的static和final)
public static void main(String[] args) {
System.out.println(PI);
}
}
变量的命名规范
-
所有的变量、方法、类名:见名知意原则(切记:不要用拼音)
-
类成员变量:首字母小写和驼峰原则,例如:monthSalary(除了第一个单词以外,后面的单词首字母大写)
-
局部变量:首字母小写和驼峰原则
-
常量:大写字母和下划线,例如:MAX_VALUE
-
类名:首字母大写和驼峰原则,例如:Man,GoodMan
-
方法名:首字母小写和驼峰原则,例如:run(),runRun()