也不能说是第一天吧哈哈哈毕竟上个学期就学了一个学期,但是都不太记得了,因为下个学期的岗位班选到了Java班,所以现在开始就重新学习Java,正式开启我的Java之旅啦!
现在是跟着尚硅谷的宋红康老师的Java视频重新学习Java的基础,今天是第一天
第一个程序,Hello World!
package day01;
/**
* The first program
* @author 爱划水的鸟
* @date 2021/6/6 - 17:54
*/
public class hello_world {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
然后还学习了注释的使用(其实这里可以跳过的因为已经会了哈哈哈哈)
一共三种注释方式:
1.单行注释 //
2.多行注释 /* */
3.文档注释 /** */
注释的作用就是增强代码的可读性,如果一个程序不写注释的话,刚写的时候还能看得懂,但是过两天这个代码就没人看得懂了
(来个程序员笑话:第一天:我的代码只有我和上帝看得懂;一天后:现在只有上帝看得懂了 哈哈哈哈哈)
还有还有,文档注释比较特别,你可以在这里写上作者姓名版本号日期啥的,而且注释的内容会生成一套以网页文件形式的文件的这个程序的说明文档
package day01;
/**
* 注释的使用
* @author 爱划水的鸟
* @date 2021/6/6 - 17:58
*/
/*
1.Java三种注释方式:
单行注释
多行注释
文档注释
2.单行注释和多行注释的作用:
①对所写的程序进行说明,增强可读性,方便自己,方便别人
②调试所写的代码
特点:单行注释和多行注释不参与编译
3.文档注释:
注释内容可以被JDK提供的工具Javadoc所解析,生成一套以网页文件形式体现的该程序的说明文档。
格式:
*/
/**
文档注释
@author 爱划水的鸟
@version v1.0
虽然不是第一个Java程序,但是,冲冲冲!
*/
public class zhushi {
/*
多行注释
main方法是程序的入口!
main的格式是固定的!
*/
public static void main(String[] args) {
//输出Hello world
System.out.print("Hello world"); //不换行
System.out.println("Hello world"); //换行
}
}
接着的是变量
变量的声明
package day01;
/**
* 变量的使用
* @author 爱划水的鸟
* @date 2021/6/6 - 18:47
*/
public class VariableTest01 {
public static void main(String[] args) {
//变量的声明
int num;
//变量的赋值
num = 0;
// !变量必须先声明才能使用
// !在同一个作用域不能有同名的变量
System.out.println(num);
}
}
变量的分类
今天主要学习了八个基本数据类型和一个String类型(String不是基本数据类型!!)
然后八个基本数据类型分别为
整形:byte(1个字节) \ short(2个字节) \ int(4个字节) \ long(8个字节)
浮点型:float(单精度) \ double(双精度)
字符型:char(1个字符=两个字节)
布尔型:boolean(这个只有true 和 false)
使用的方法在代码里面就不写出来啦
package day01;
/**
* 变量的分类
* @author 爱划水的鸟
* @date 2021/6/6 - 18:57
*/
/*
基本数据类型:
整形:byte \ short \ int \ long
浮点型:float \ double
字符型:char
布尔型:boolean
引用数据类型:
类(class) <-(string在这里)
接口(interface)
数组(array)
*/
public class VariableTest02 {
public static void main(String[] args) {
//1.整形:byte(1字节) short(2字节) int(4字节) long(8字节)
//byte:范围-128 - 127
byte a = 127;
byte b = -128;
//声明long型变量的时候,需以'L'结尾
short c = 12345;
int d = 12345678;
long e = 123456789L;
System.out.println(e);
//2.浮点型:
//float单精度:尾数可以精确到7位有效数字,很多情况下难以满足需求。
//double:双精度:精度是float的两倍,通常情况下采用此类型。
//float类型(4字节):需要在后面加上'f'或'F'.
float num1 = 9.13f;
System.out.println(num1);
//double类型(8字节)
double d1 = 9.13;
System.out.println(d1);
//3.字符型:char(1字符=2字节)
//定义char型变量,通常要用'',内部只写一个字符,或者转义字符
//每个英文字母都相对应一个ASCII码
char c1 = 'c';
char c2 = '中';
char c3 = '3';
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
//转义字符
char c4 = '\n';
System.out.print("hello" + c4);
System.out.println(c2);
//char类型不能为空
//编译失败:
//char ch123 = '';
char ch = ' '; //空格也算是一个字符
//布尔型:boolean
//只能取两个值:true 、 false
boolean b1 = true;
boolean b2 = false;
boolean isMArried = true;
if(isMArried){
System.out.println("你不能参加单身part了!\n很遗憾");
}else {
System.out.println("你可以多谈谈女朋友!");
}
}
}
下一个变量类型的提升
可以分为自动类型提升和强制类型提升,强制类型提升的话数据可能会有精度损失
具体的在代码里面
package day01;
/**
* 自动类型提升和强制类型提升
* @author 爱划水的鸟
* @date 2021/6/6 - 19:40
*/
/*
基本数据类型之间的运算规则:
只讨论七种基本类型变量的运算,不含boolean类型
1.自动类型提升:
容量小的数据类型和容量大的数据类型相加时,结果会自动提升为容量大的类型
byte --> short --> int --> long --> float --> long
char --> int --> long --> float --> long
2.强制类型转换:自动类型运算的逆运算,就是将大的类型转换成小的类型
强制类型转换数据可能会损失精度
*/
public class VariableTest03 {
public static void main(String[] args) {
//注意:不能超过变量的储存范围
byte a1 = 123;
int a2 = 124;
//编译不通过byte a3 = a1 + a2;
int a3 = a1 + a2;
System.out.println(a3);
//整形和浮点型也可相加
float f1 = a1 + a2;
float f2 = a1 + f1;
System.out.println(f1);
System.out.println(f2);
//自动类型提升
System.out.println(a1 + f1);
//char类型的相加
//char类型运算会先转换为对应的ASCII码
//char类型的运算必须要用int或长度更大的类型来接收
short s1 = 123;
char ch1 = 'a';
//编译错误:
//char ch2 = s1 + ch1;
//short ch2 = s1 + ch1;
int ch2 = s1 + ch1;
System.out.println(ch2);
//强制类型转换
//格式:
//要转换的数据类型 变量名 = (要转换的数据类型)要转换的变量名;
//例:
double d123 = 123.1;
int i123 = (int)d123;
System.out.println(i123);
//可能会导致精度损失
//精度损失1
double d12 = 123.1;
int i12 = (int)d123;
System.out.println(d12);
System.out.println(i12);
//精度损失2
int i12345 = 129;
byte b1234 = (byte)i12345;
System.out.println(i12345);
System.out.println(b1234);
//无精度损失
int i19 = 1234;
short s1234 = (short)i19;
System.out.println(i19);
System.out.println(s1234);
}
}
然后是一些可能会遇到的编码情况
比如定义float类型没写f啊,或者定义long类型没写l啊之类的
package day01;
/**
* 一些需要注意的编码情况
* @author 爱划水的鸟
* @date 2021/6/6 - 20:20
*/
public class VariableTest04 {
public static void main(String[] args) {
//1.编码情况1:
//写long型变量时忘记加L,没有报错且可以运行
long l1 = 12345;
System.out.println(l1);
//其实没加L的时候会默认转换成为int,没报错是因为没超过int类型的范围
//编译错误:
//long l2 = 2134673575735;
//写float类型时不加f
//编译失败:
//float f1 = 12.3;
//
//编码情况2:
byte b = 12;
//编译错误:
//byte b1 = b +1;
//因为整形常量默认为int类型,相同的浮点型常量默认为double类型
float f = 1.2f;
//编译失败:
//float f2 = f + 1.2;
}
}
最后就是常用的String类型啦
这里需要注意"+"什么时候是运算符什么时候是连接符
package day01;
/**
* String类型的使用
* @author 爱划水的鸟
* @date 2021/6/6 - 20:31
*/
/*
1.String属于引用数据类型(不是基本数据类型!不是基本数据类型!),翻译为:字符串
2.声明String类型变量时,使用""
*/
public class StringTest {
public static void main(String[] args) {
String s1 = "Hello world";
System.out.println(s1);
String s2 = "a";
String s3 = "";
String id = "学号";
String idNum = "0104200538";
String info = id + idNum; //这里+为连接符
System.out.println(info);
boolean b1 = true;
String info2 = id + b1;
System.out.println(info2);
//判断“+”是运算符还是连接符
//看运算式中“+”的附近是否含有String类型
char c1 = 'a';
int num = 1;
String s12 = "hello";
System.out.println(c1 + num + s12); //第一个是运算符第二个是连接符
System.out.println(c1 + s12 + num); //两个都是连接符
System.out.println(s12 + num + c1); //都是连接符 因为s12 + num 得字符串类型,所以后面那个也会是连接符
System.out.println(c1 + (s12 + num)); //两个都是连接符,理由同上
System.out.println((c1 + s12) + num); //两个都是连接符,理由同上
}
}
今天就先学到这里啦,虽然都是写很基础的东西,但是还是用了几个小时了,本来这些好像有点似懂非懂,就没有跳重新老老实实跟着视频学,也不算是浪费时间吧哈哈哈哈,加油加油加油冲冲冲,以后就会慢慢变好啦!
今天学习时间:230分钟