Java初学第一天

目录

笔记

Java数据类型

数据类型

基本数据类型

示例代码

引用数据类型

示例代码

运行机制

常量

示例代码

变量

示例代码

标识符

关键字

类型转换

编码字符集

 作业展示

作业第一道

作业第二道

作业第三道--拓展题


笔记

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.对于方法来说

  1. 几乎和类是一样的

  2. 方法一般是定义在类中的

  3. 方法的名称可以重复定义,前提是方法当中的参数列表不一样

关键字

常用的关键字

类型转换

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	
*/
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值