基础语法
注释
什么是注释?
注释就是说明程序的问题,方便自己和别人阅读代码
注释的种类和格式:
1.单行注释:
//后面根解释文字
2.多行注释
/*
这里写注释文字
可以写多行
*/
3.文档注释
/**
这里写文档注释
也可以写多行,文档注释可以利用JDK的工具生成帮助文档
*/
字面量
字面量就是告诉程序员在程序中的书写格式,即字面看到就知道表示什么意思,下面是常用的在程序中的书写格式
public class LiteralDemo{
public static void main(String[] args){
//1.整数
System.out.println(666);
//2.小数
System.out.println(3.66);
//3.字符: 字符必须用单引号引起来
System.out.println('a');
System.out.println('0');
System.out.println('中');
System.out.println(' '); //空格也算字符
//特殊字符:\t表示制表符 \n表示换行
System.out.println('\t'); //这相当于一个tab键,专业叫做制表符
System.out.println('\n'); //这是换行的意思
//4.字符串:字符串是双引号引起来的
System.out.println("我爱你中国abc");
//5.布尔值:只有两个值true和false
System.out.println(true);
System.out.println(false);
}
}
变量
变量是用来记录程序中的数据,其本质是内存中的一块区域,可以把这个区域理解成一块盒子.
int age = 18;
System.out.println(a);
当代码 int age = 18,这句代码时,JVM会在内存中申请一块区域,在这个区域中存储了一个整数18,给这个区域取个名子叫age,相当于在则会个盒子中存了一个数据18,这个盒子的名字是age,当我们打印age时,就是从这个盒子中把数据取出来再打印.
使用变量的原因?
使用变量来记录数据,对于数据的管理更为灵活,比如我们有很多个地方用到一个整数10
//1.假设4多个地方用到整数10; 现在我想把10改为20,这时你得一条语句一条语句的修改
System.out.println(10);
System.out.println(10);
System.out.println(10);
System.out.println(10);
//2.同样这里还是在多个地方用到整数10,你可以先用一个变量记录这个整数10
int x = 10;
//然后在需要用到整数10的地方,用x代替就行;
//如果我们把x值改了,那么后面用到x的值的地方就都一起改变了
System.out.println(x);
System.out.println(x);
System.out.println(x);
System.out.println(x);
变量的应用场景:
变量的应用场景无处不在,只要是程序中能发生变化的数据,都可以用变量存储。比如:你微信钱包中的余额,你微信的昵称,你微信的个性签名; 余额随着你花钱是不是在变少,昵称和个性签名也可以经常修改。
//比如:你现在有188.8元,一会要发100元,再收20元。
double money = 188.8;
//发100元
money = money - 100;
//再收20元
money = money + 20;
//再打印money记录的值是多少
System.out.println(money);
//再比如:公交车大人2元,小孩一元,公交车经过2站
//第一站:3个大人1个小孩上车
//第二站:1个大人1个小孩上车,请问一共上了多少人,一共收入多少钱?
//刚开始公交车箱子里没有钱,用money2表示箱子里的钱
int money2 = 0;
//刚开始公交车上也没有人,用count变量表示上车的人数
int count = 0;
//经过两站的人数:第一站3人,第二站1人,总的人数是3+1
count = 3+1;
//经过两站的钱数:
money2 = money2+3*2+1; //经过第一站后
money2 = money2+2+1; //经过第二站后
//打印人数和钱数
System.out.println(count);
System.out.println(money);
变量在实际开发中用得特别多,关于变量使用注意事项需要给大家交代一下。
讲这些注意事项目的是让大家知道,有哪些写法是允许,有哪些写法是不允许的,能分辨对错,并知道为什么错。
1.变量定义在哪个{}范围内,就只在哪个大括号内有效。变量的有效范围称之为变量的作用域
{
int a = 10;
System.out.println(a); //这是是对的
}
System.out.println(a); //这里会出错
2.在同一个作用域内,不能有两个同名的变量
{
int a = 10;
int a = 20; //这里会出错
}
3.变量没有初始化只,不能直接使用
int a; //仅仅定义了变量,但是没有初始值
System.out.println(a); //这里会出错
4.变量可以定义在同一行
如:int a=10, b=20; //a和b都是int类型
再总结一下几点
-
变量是用来记录程序中的数据的,可以把变量理解成内存中的小盒子,盒子里放的东西就是变量记录的数据
-
变量的定义格式:
数据类型 变量名 = 初始值;
-
变量记录的数据程序运行过程中是可以发生改变的:
变量名 = 值;
关键字
关键字是java语言中有特殊含义的单词。比如用int表示整数,用double表示小数,等等!
关键字的特点:
1.关键字都是小写的
2.关键字在idea中有特殊颜色标记(如果你没有修改关键字的颜色,默认是蓝色的)
标识符
标志符其实就是我们自己取的名字。像前面我们取的类名,变量名其实都是标志符。
讲标志符的目的,是知道取名字的规则,不能随即便瞎取。有些规则是强制要求的,不遵守就会报错。还有一些规则是建议大家遵守的,这样取名字显得更加专业。
强制要求:必须遵守,不遵守就会报错
1.最好是字母、数字、下划线、$组成
2.不能以数字开头
3.不能是Java的关键字
建议遵守:按照下面的方式取名字会显得更加专业
1.所有的名字要见名知意,便于自己和别人阅读
举例: class Student{} //一看这个类就知道表示一个学生
int age =10; //一看这个变量就知道表示年龄
2.类名:首字母大写(大驼峰命名)
举例: class Student{}
3.变量名:第二个单词开始首字母大写(小驼峰命名)
举例: double money = 6.88;
double applePrice = 7.5;
数据类型
数据类型就是用来规定变量存储什么类型的数据
比如:int a = 10,这里int就是限制变量只能存储整数,除了int,这种数据类型,JAVA还他提供了很多其他的数据类型,JAVA的数据类型整体上来说分为两大类:基本数据类型和引用数据类型
基本数据类型如下图,一共分为4类8种,每一种数据类型占用的内存空间不一样,能够表示的数据范围也不一样
需要我们注意的是,随便写一个整数或者小数的字面量,它也是有默认数据类型的
- 比如23,它默认就为int类型;如果加上后缀L,则为long类型; - 比如23.8,它默认为double类型;如果加上后缀F,则为float类型;
下面定义各种类型的变量,将这8种基本数据类型都用一下。
public class TypeDemo1 {
public static void main(String[] args) {
// 目标:掌握8种基本数据类型,用来定义变量。
// 1、整型
byte number = 98;
System.out.println(number);
short number2 = 9000;
int number3 = 12323232; // 默认
// 注意:随便写一个整型字面量,默认是int类型的,73642422442424虽然没有超过long的范围,但是它超过了本身int的范围了。
// 如果希望随便写一个整型字面量是long类型的,需要在其后面加上L/l
long number4 = 73642422442424L;
// 2、浮点型
//注意:
//随便写一个小数字面量,默认当成double类型对待的,
//如果希望这个小数是float类型的,需要在后面加上:F/f
float score1 = 99.5F;
double score2 = 99.8; // 默认定义方案。
// 3、字符型
char ch1 = 'a';
char ch2 = '中';
char ch3 = '国';
// 4、布尔型
boolean b1 = true;
boolean b2 = false;
// 引用数据类型:String.
// String代表的是字符串类型,定义的变量可以用来记住字符串。
String name = "黑马";
System.out.println(name);
}
}
数据类型转换
在我们实际开发中可能存在将某种类型变量的值,赋值给另一个类型的变量,也可能存在多种数据类型的数据一起运算的情况,在这种情况下,就会涉及类型转换,类型转换的形式总体分为两种:自动类型转换和强制类型转换.
自动类型转换
定义:数据范围小的变量可以直接赋值给数据范围大的变量
byte a = 12;
int b = a; //这里就发生了自动类型转换(把byte类型转换int类型)
自动类型转换的原理:
自动类型转换其本质就是在较小数据类型数据前面,补了若干个字节
除了byte和int之间的转换之外,其他类型也可以转换,转换顺序如下图所示
如代码:
// 自动类型转换:小类型转换为大类型数据
byte b1 = 3;
short b2 = b1;
int b3 = b2;
long b4 = b3;
float b5 = b4;
double b6 = b5;
System.out.println(b1); //3
System.out.println(b2); //3
System.out.println(b3); //3
System.out.println(b4); //3
System.out.println(b5); //3.0
System.out.println(b6); //3.0
-
表达式的自动类型转换
自动类型转换还有另外一种形式,就是表达式的自动类型转换。所谓表达式指的是几个变量或者几个数据一起参与运算的式子。
如果同一个表达式中,出现不同类型的变量或者数据一起运算,这种情况下运算结果是一个什么数据类型呢?需要遵守下面的两条运算规则:
1.多种数据类型参与运算,其结果以大的数据类型为准
2.byte,short,char 三种类型数据在和其他类型数据运算时,都会转换为int类型再运算
public class TypeConversionDemo2 {
public static void main(String[] args) {
// 目标:掌握表达式的自动类型转换机制。
byte a = 10;
int b = 20;
long c = 30;
long rs = a + b + c;
System.out.println(rs);
double rs2 = a + b + 1.0;
System.out.println(rs2);
byte i = 10;
short j = 30;
int rs3 = i + j;
System.out.println(rs3);
// 面试笔试题: 即使两个byte运算,结果也会提升为int
byte b1 = 110;
byte b2 = 80;
int b3 = b1 + b2;
System.out.println(b3);
}
}
强制类型转换
前面我们学习了自动类型转换,我们知道可以将数据类型小的数据可以直接赋值给数据范围大的变量。 那反过来,能不能将数据范围大的数据直接赋值给数据范围小的变量呢? 答案是会报错。
因为数据范围大的数据,赋值给数据范围小的变量,它有可能装不下;就像把一个大桶的水倒入一个小桶中,有溢出的风险。
什么是强制类型转换
但是你强行将范围大的数据,赋值给范围小的变量也是可以的,这里就需要用到强制类型转换。下面是强制类型转换的格式
目标数据类型 变量名 = (目标数据类型)被转换的数据;
// 强制类型转换:大类型转换为小类型
// 强制类型转换的原理,其实就是强行把前面几个字节砍掉,但是有数据丢失的风险
int a = 10;
byte b = (byte) a;
System.out.println(a); //10
System.out.println(b); //10
int e = 1300;
byte f = (byte) e;
System.out.println(e); //1300
System.out.println(f); //20
double c = 11.73;
byte d = (byte) c;
System.out.println(c); //11.73
System.out.println(d); //11
int one = 10;
int two = 3;
System.out.println(one/two); //3
强制类型转换的原理,其实就是强行把前面几个字节砍掉,但是有数据丢失的风险。