首页 > 编程语言 >【Java】从头开始的Java复建day1

【Java】从头开始的Java复建day1

时间:2023-08-06 23:11:08浏览次数:35  
标签:Java 变量 int System day1 char println 复建 out

用的书:《Java从入门到精通》

前两章跳过了

第三章 Java语言基础

3.1 Java主类结构

  • 包声明
  • 导入api类库 eg. import xxx;
  • 声明类
  • 声明成员变量和局部变量
  • 编写主方法
// 包声明
// 必须在Number包中才能写一这行
package Number;

// 必须要和.class文件名一致,不如说这里就是要写文件名的地方
public class Java3_1 {
    // 全局变量(成员变量) 关键字static
    // 全局变量声明在类体中
    static String s1 = "你好";
    // 主方法
    // 共有 静态 返回值为空 main函数(字符串类型数组 参数)
    public static void main(String[] args) {
        // 局部变量 声明在方法体中
        String s2 = "Java";
        System.out.println(s1);
        System.out.println(s2);
    }
}

3.2 基本数据类型

  • 数值型
    • 整数类型(byte short int long)
    • 浮点类型(float double)
  • 字符型
  • 布尔型

整数类型

十进制 八进制 十六进制

注意:

  • 除了0,其他十进制数字不能以0为开头
  • 八进制必须以0开头
  • 十六进制必须以0X或者0x开头
数据类型 内存空间(8位为1字节) 取值范围
byte 8位 -128~127
short 16位 -32768~32767
int 32位 -2147483648~2147483647
long 64位 -9223372036854775808~19223372036854775807

浮点类型

  • 单精度浮点类型(float)
  • 双精度浮点类型(double)

注意:

  • 默认情况下位double 若要使用float需要在后边加F或f
数据类型 内存空间(8位为1字节) 取值范围
float 32位 1.4E-45~3.4028235E38
double 64位 4.9E-324~1.7976931348623157E308

字符类型

  • char型
    • 仅存储单个字符
    • 占用16位内存空间
    • 定义时要以''表示
  • 转义字符:”\“开头
转义字符 含义 转义字符 含义
\ddd 1~3位八进制 \ uxxxx 4位十六进制
' 单引号 \ 反斜杠
\t 制表符 \r 回车
\n 换行 \b 退格
\f 换页

布尔类型(逻辑类型)

只有true和false两个值

public class Java3_2 {
    public static void main(String[] args){
        System.out.println("----------------1.整数类型----------------");
        // 整数类型
        // 定义int型变量x
        int x1;
        // 定义int型变量x,y
        int x2, y1;
        // 定义int型变量x,y并赋初值
        int x3 = 450, y2 = -462;
        int test = 2147483647;
        // int test1 =  2147483648;
        // bug text: java: 整数太大

        /*
        对于long型,若其取值大于int最大值或小于int最小值
        * 即取到了long的取值范围中不属于int的那部分
        需要将数字后加L或l,来表示是长整数
        */
        long testlong = 2147483648L;
        // 会有提示将l换为L更好
        long testlong1 = 2147483648l;
        // long testlong2 = 2147483648;
        // bug text: java: 整数太大

        // 例子
        // 相加的时候需要将结果存为取值范围最大的数据类型中
        byte mybyte = 124;
        short myshort = 32564;
        int myint = 45784612;
        long mylong = 46789451;
        long result = mybyte + myshort + myint + mylong;
        System.out.println("结果为:" + result);

        System.out.println("----------------2.浮点类型----------------");
        // float f = 13.23;
        // bug text: java: 不兼容的类型: 从double转换到float可能会有损失
        float f1 = 13.23f;
        double d = 638.678;
        double d1 = 638.678d;
        System.out.println("单精度浮点类型:" + f1);
        System.out.println("双精度浮点类型:" + d1);

        System.out.println("----------------3.字符类型----------------");
        // char c = "a";
        // bug text: java: 不兼容的类型: java.lang.String无法转换为char
        char c1 = 'a';
        //另一种表达方式可以使用字符在Unicode表中的排序编号来打印字符
        char c2 = 97;
        System.out.println("直接使用字符定义:"+ c1);
        System.out.println("使用字符在Unicode表中的排序编号来打印字符;" + c2);
        System.out.println("例子:");
        char word = 'd', word2 = '@';
        int p = 23045, p2 = 45213;
        System.out.println("d在Unicode表中的顺序位置是:" + (int)word);
        System.out.println("d在Unicode表中的顺序位置是:" + (int)word2);
        System.out.println("Unicode表中的第23045位是:" + (char)p);
        System.out.println("Unicode表中的第45213位是:" + (char)p2);
        System.out.println("转义字符");
        char c3 = '\\';
        char c4 = '\u2605';
        char c5 = '\123';
        String str = "says \'OH, I see, thx.\'";
        String str1 = "table name1\ttable name2\t\ntable value1\ttable value2\t";
        char c6 = 'a';
        char c7 = '\b';
        char c8 = 'c';
        char c9 = '\f';
        System.out.println("反斜杠" + c3 + "星星" + c4);
        // 单引号
        System.out.println(str);
        // 制表符和换行
        System.out.println(str1);
        /*
        关于退格的说明
        这里首先定义了char c6 = 'a'; char c7 = '\b'; char c8 = 'c';
        当运行了c6的时候,光标是在a后边的
        之后运行了c7,光标变成了a前
        此时运行c8的话所输出的字符将会覆盖c6
         */
        System.out.print(c6);
        System.out.print(c7);
        System.out.println(c8);
        System.out.println(c9);
    }
}

3.3 常量与变量

  • 标识符
    • 由任意顺序的字母 下划线 美元符号和数字组成 严格区分大小写
    • 第一个字符不能是数字
    • 不能是保留关键字(int之类的)
  • 关键字
    int public this finally boolean abstract
    continue float long short throw throws
    return break for static new interface
    if goto default byte do case
    strictfp package super void try switch
    else catch implements private final class
    extends volatile while synchronized instanceof char
    protected import transient double

变量的声明

变量的定义就是要告诉编译器compiler这个变量的类型进而分配内存空间

这个内存空间内的值是变化的 那么这个内存空间就称为变量 变量名就是这个内存空间的名字

变量声明的时候可以赋值可以不赋值但一定要声明变量类型

常量的声明

常量(constant)通常也被称为final变量

在整个程序中只能被赋值一次 并且需要final关键字

通常常量名使用全大写字母

当声明了变量会发生什么

内存

  • 系统(OS)区
  • 程序(Program)区
  • 数据(Data)区

当程序执行时

1.程序代码加载到程序区
2.在数据区配置空间给出这两个变量

变量的有效范围

  • 成员变量:在类体中定义
    • 静态变量:可以跨类 在其他类中可以用"类名.静态变量名"使用
    • 实例变量
  • 局部变量
    • 在类的方法体中定义 只在当前代码块中有效
    • 生命周期取决于方法
      • 当该方法被调用 Java虚拟机会为方法中的局部变量分配内存空间
      • 当该方法调用结束后 会释放方法中的局部变量占用的内存空间 局部变量也会被销毁
    • 当局部变量和成员变量名字相同 成员变量将暂时在此方法中失效
public class Java3_3 {
    // 当常量为成员变量的时候必须声明的时候赋值
    static final double PI = 3.14;
    // 这个可以不在声明时赋值
    static int age = 18;
    // 实例变量
    int x = 45;
    // 静态变量
    static int y = 90;
    static int times = 3;
    public static void main(String[] args){
        final int number;
        // number = 1235;
        // bug text: java: 可能已分配变量number
        // number是常量 只能够赋值一次
        age = 22;
        number = 1236;
        System.out.println("常量PI的值为:"+PI);
        System.out.println("赋值后number的值为:"+number);
        System.out.println("int型变量age的值为:"+age);

        // 当重名时 优先使用该方法中定义的变量 近水楼台先得月
        int times = 4;
        System.out.println("times的值为:" + times);
    }
}

标签:Java,变量,int,System,day1,char,println,复建,out
From: https://www.cnblogs.com/ryukirin/p/17610317.html

相关文章

  • Java实现本地缓存的几种方式
    一、概况引入缓存,主要用于实现系统的高性能,高并发。将数据库查询出来的数据放入缓存服务中,因为缓存是存储在内存中的,内存的读写性能远超磁盘的读写性能,所以访问的速度非常快。但是电脑重启后,内存中的数据会全部清除,而磁盘中的数据虽然读写性能很差,但是数据不会丢失。目的主要为了重......
  • 异步请求返回处理之finally的用途,代码规范摸索【玩转JavaScript】
    前言最近在改动老代码时,发现了一个有趣的现象。对于异步请求返回结果处理中,使用finally做兜底处理,不同的页面并不统一,也就是有的页面使用了,有的页面没使用,没使用的页面增加了额外的失败的处理。所以finally到底要不要统一?本着代码规范化原则的思维,我准备一探究竟。文章速度finally......
  • 【JavaScript17】eval函数
    eval本身在js里面正常情况下使用的并不多.但是很多网站会利用eval的特性来完成反爬操作.我们来看看eval是个什么鬼?从功能上讲,eval非常简单.它和python里面的eval是一样的.它可以动态的把字符串当成js代码进行运行.vars="1+2+3+4+5+6+7+8";varc=eval(s);//帮你......
  • Java数组
       ......
  • 【JavaScript16】定时器
    在JS中,有两种设置定时器的方案1、setTimeout//语法规则t=setTimeout(函数,时间)//经过xxx时间后,执行xxx函数//m是第几个定时器varm=setTimeout(function(){console.log("我叫xwl");},5000);//单位是毫秒console.log("正常执行的....");......
  • 【JavaScript15】闭包
    什么是闭包闭包(closure)是一种保护私有变量的机制,在函数执行时形成私有的作用域,保护里面的私有变量不受外界干扰,即形成一个不销毁的栈环境。闭包的特性:函数嵌套函数内部函数可以访问外部函数的变量参数和变量不会被回收。为什么要有闭包?1、先来看一段代码发现没有......
  • 【JavaScript14】函数基础
    函数定义函数定义的方法有多种,主要分为函数声明和函数表达式//函数声明functionfunc(arg1,arg2){console.log("arg1=",arg1);console.log("arg2=",arg2);return"返回一些东西"}varret=func("苹果","鸭梨");console.log(......
  • 异常: java.security.InvalidKeyException: Illegal key size
    问题描述importorg.apache.commons.codec.digest.DigestUtils;importorg.bouncycastle.jce.provider.BouncyCastleProvider;importjavax.crypto.Cipher;importjavax.crypto.spec.SecretKeySpec;importjava.security.Security;importjava.util.Base64;publicclass......
  • JAVA面试题(一)
    问:谈谈你自己对面向对象的理解?抽象,封装,继承,多态理解:假如我是女娲,我要造人(人是个对象),人要有思想,肉体(抽象) 因为要造很多人,所以我想请人一起帮忙造,但是我又不想让他知道我的技术,所以我就把造人的技术封装起来,然后他只需要知道造什么样子的人就行了(封装)但是这样效率还是很慢,所以我就造......
  • 【JavaScript11】正则表达式 RegExp对象
    定义正则表达式(英语:RegularExpression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。搜索模式可用于文本搜索和文本替换。创建RexExp对象有两种方式创建RexExp对象第一种:使用字面量创建RegExp对象的语法:第......