目录
笔记
Java数据类型
数据类型
基本数据类型和引用数据类型
基本数据类型
四类八种
1.整型(整数)
byte(字节):8位(2^7-1)、short(短整型):16位(2^15-1)
int(整型):32位(2^31-1)、long(长整型):64位(2^63-1)
注意:默认识别的整数类型是int,常用的是int类型。
2.浮点型(小数)
float(单精度) double(双精度)
注意:默认识别小数是double,常用的是double类型;如果把小数类型标记成单精度类型,需要在小数后面添加字母F/f
3.字符型
char 单个字符 :写进单引号里面 ‘’ character 'a','0','李'
4.布尔类型
boolean,只有两种true/false
示例代码
package li;
public class day01 {
public static void main(String[] args) {
System.out.println(21);
System.out.println(13952224568L);//整数过大,要加上一个L
System.out.println(12.5);//小数
System.out.println(1.75F);//float
System.out.println('张');//char
System.out.println(true);//boolean
System.out.println(getDataType(21));
System.out.println(getDataType(13952224568L));//整数过大,要加上一个L
System.out.println(getDataType(12.5));//小数
System.out.println(getDataType(1.75F));//float
System.out.println(getDataType('张'));//char
System.out.println(getDataType(true));//boolean
}
//校验基本数据类型
public static String getDataType(Object o){//Object 对象
return o.getClass().toString();//转换成String
}
}
/*
运行结果:
21
13952224568
12.5
1.75
张
true
class java.lang.Integer
class java.lang.Long
class java.lang.Double
class java.lang.Float
class java.lang.Character
class java.lang.Boolean
*/
引用数据类型
1.String 字符串 文本类型 ''河南省郑州市''
2.class 类类型 如 Demo01 Object
3.Arrays 数组类型 int[] double[] String[]
4.enum 枚举类型
5.interface 接口类型
6.annotain 注解类型 @Controller @Component
7.null 空类型 值
8.……
示例代码
package DAY01;
public class Demo02 {
public static void main(String[] args) {
//转义字符 \
System.out.println("\"郑州的\"");
System.out.println("张三");
System.out.println("打篮球/玩游戏");
System.out.println("我叫张三,\n我家是郑州的,\n我喜欢打篮球玩游戏");// \n--->new line
System.out.println("我叫张三,\r\n我家是郑州的,\r\n我喜欢打篮球玩游戏");// \r--->enter
System.out.println("姓名\t" + "年龄\t" + "分类\t");
System.out.println("张三\t" + "20\t" + "80\t");
System.out.println("李四\t" + "23\t" + "90\t");
System.out.println("王五\t" + "21\t" + "85\t");// \t-->tab 横向制表符
}
}
/*
结果展示:
"郑州的"
张三
打篮球/玩游戏
我叫张三,
我家是郑州的,
我喜欢打篮球玩游戏
我叫张三,
我家是郑州的,
我喜欢打篮球玩游戏
姓名 年龄 分类
张三 20 80
李四 23 90
王五 21 85
*/
运行机制
1.创建.java文件---源程序文件
2.编译器会对源程序文件进行转换,生成字节码文件(后缀为.class)
3.jvm(虚拟机)会对字节码文件进行加载执行
备注: java语言是一种跨平台开发的语言,依据有各个平台的虚拟机
常量
对于整数来说
-
二进制: 0B开头描述的是二进制数 0B10
-
八进制: 0开头的描述的是一个八进制的整数
-
十进制: 10 50 100
-
十六进制: 0x开头描述的是一个16进制的整数 0x00 0-9 A-F
示例代码
package DAY01;
public class Demo03 {
public static void main(String[] args) {
System.out.println(21);//21是常量值
System.out.println(12.5);//12.5也是常量值
System.out.println("张三");// 张三就是常量值
System.out.println(true);// true也是常量值
System.out.println(10);//十进制
System.out.println(0B10);//二进制
System.out.println(010);//八进制
System.out.println(0x10);//十六进制
}
}
/*
运行结果:
21
12.5
张三
true
10
2
8
16
*/
变量
在程序当中会发生改变的我们称之为变量
语法结构:
声明格式:数据类型 变量名称 = 变量值
备注:变量值我们一般又称之为初始值
注意事项:
1.变量定义未赋值,是不能使的
2.变量超出它的定义范围,也不能使用了
3.在相同作用域中,变量不能二次声明
示例代码
package DAY01;
public class Demo04 {
// 变量知识
public static void main(String[] args) {
System.out.println(21);//21岁
//变量名称
int age = 21;
age = 22;
System.out.println(age);//22岁
//注意事项
//String address;//未赋值
//System.out.println(address);//可能尚未初始化变量address
{
String username = "张三";
System.out.println(username);
}
//System.out.println(username);//超出定义范围
//int age = 25;//范围中已定义变量 'age',不能再次定义
}
}
/*
运行结果:
21
22
张三
*/
标识符
在程序当中允许你自定义的名称都叫标识符
规范
1.对于class来说
类名的首字母一般要求大写
类名的开头不能是数字
组成部分字母(大小写)、数字、_(下划线)、$(美元符号)
如果有多个单词,一般建议采用驼峰名命方式
类名中不能使用关键字
2.对于变量来说
几乎和类的规范是一样的
变量的字母开头一般都是小写开头
3.对于常量来说
几乎和类是一致的
一般字母都是大写的
4.对于方法来说
几乎和类是一样的
方法一般是定义在类中的
方法的名称可以重复定义,前提是方法当中的参数列表不一样
关键字
常用的关键字
类型转换
byte age = 21;
int age2 = age;
double height = 1.75;
float height = height;//报错
对于基本数据类型尤其是数值型的数据
byte < short < int < long < float < double
对于从小范围到大范围的转换,可以直接转换(自动转换,隐式转换)
对于从大范围到小范围的转换,需要强制转换(显示转换)
强制转换有语法格式:
小范围数据类型 变量名 = (对应的小范围数据类型)变量名
double height = 1.75; float height2 = height;//报错 //正确的表示 float height2 = (float)height;
备注:
char 字符型 是包含在范围中,本质上是一个整数
char ch = 'A'; int num = ch;//输出的是A的ASCII码
编码字符集
由于计算机当中只能识别基本的01数字,不能识别生活中的语言文字和符号
需要把生活当中的语言文字和符号录入到计算机当中,所以出现了编码表
常用的编码表有ISO-8859-1/GKB(中文)/Unicode编码表--->UTF-8
世界上首个编码表 ASCII表
所有的编码表都支持ASCII表
注意事项:
当程序当中出现乱码现象,检查文件的编码字符集
解决办法:把代码赋值出来,新建文件粘贴进去,原文件删除
GKB编码字符集规定,一个汉字占用2个字节
UTF-8编码字符集规定,一个汉字占用3个字符节
作业展示
作业第一道
示例代码
public static void zuoye1(){
int[] chengji = {50,80,10};
int sum = 0;
for (int i = 0;i < chengji.length;i++){
sum = sum + chengji[i];//ages[0]----ages[1]----ages[6]
}
int avg = 0;
avg = sum/chengji.length;
System.out.printf("---------------学生java成绩-----------------\n");
System.out.println("姓名\t" + "性别\t" + "成绩\t");
System.out.println("张三\t" + "男\t" + "50\t");
System.out.println("李四\t" + "女\t" + "80\t");
System.out.println("王五\t" + "男\t" + "10\t");// \t-->tab 横向制表符
System.out.printf("-------------------------------------------");
System.out.println("\n总成绩:" + sum);
System.out.println("平均成绩:" + avg);
}
/*
运行结果:
---------------学生java成绩-----------------
姓名 性别 成绩
张三 男 50
李四 女 80
王五 男 10
-------------------------------------------
总成绩:140
平均成绩:46
*/
作业第二道
定义两个变量
int a = 10;
int b = 20;
实现让两个变量的值进行交换(采用两种方式)
示例代码
public static void zuoye2(){
int a = 10,b = 20;
System.out.println(a);
System.out.println(b);
//方法1 借助中间变量
int temp;
temp = b;
b = a;
a = temp;
System.out.println("方法1结果:");
System.out.println(a);
System.out.println(b);
//方法2 不借助中间变量
a = a + b;
b = a - b;
a = a - b;
System.out.println("方法2结果:");
System.out.println(a);
System.out.println(b);
}
/*
运行结果:
10
20
方法1结果:
20
10
方法2结果:
10
20
*/
作业第三道--拓展题
题目描述
编程序实现:输入任意一个年份、月份,输出该月份的公历日历(要求用循环控制打印)。
提示:
1.先求出从公元1年1月1日到这个月的1日总共有多少天,并求出这个月的1日是星期几。
2.可以将每个月的天数存入一个数组中,但是不需要将一个月的每一天存入数组中。
常见问题:
1.如何控制某个月1日的打印位置?
答:先由程序计算出来该月份的1日是星期几,然后控制在打印“1”之前打印相应个数的空格。
2.如何控制每周和每月的打印换行?
答:可以根据当前这一天的打印位置控制每周的打印换行,并根据该月份的总天数控制每月的打印换
行。
输入格式:
输入年份、月份,数据之间以空格分隔。
输出格式:
每项数据占4个字符宽度,右对齐。
输入样例:
2019 10
输出样例:
Sun Mon Tue Wed Thu Fri Sat 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
示例代码
public static void zuoye3(){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int y = sc.nextInt();
int r = 1,sum = 0;
int n1 = 1,y1 = 1 ,r1 = 1;
for (;n1<n;n1++){
sum = sum + year(n1);
}
for (int i = 1;i<y;i++){
sum = sum + month(i,year(n));
}
sum = sum + r;
for(int i = 1;i<y1;i++){
sum = sum -month(i,year(n1));
}
sum = sum - r1;
sum = sum % 7;
System.out.println("Sun" + "\tMon" + "\tTue" + "\tWed" + "\tThu" + "\tFri" + "\tSat" );
for(int i = 1;i<sum+2+month(y,n);i++){
if(i % 7 == 0){
System.out.print(i- sum - 1 +"\t");
System.out.print("\n");
}
else{
if(i<=sum+1) {
System.out.print("\t");
}
else{
System.out.print(i- sum - 1 +"\t");
}
}
}
}
public static int year(int i){
if( ((i % 100 != 0 || i % 400 == 0))&& i % 4 == 0 ){
return 366;
}
return 365;
}
public static int month(int i,int k){
if( i == 2 ){
if(k == 366) {
return 29;
}
return 28;
}
else if(i == 4 || i == 6 || i == 9 || i == 11) {
return 30;
}
return 31;
}
/*
运行结果:
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
*/