Day_1 Java&变量

Day 1 Java&变量

java语言特点

​ 面向对象

​ 简单

​ 跨平台(操作系统、服务器、数据库)

计算机的执行机制

​ 编译执行

​ 将源文件编译成机器码,一次编译,多次执行

​ 执行效率高,不可跨平台

​ 解释执行

​ 将源文件一行一行解释,一行一行执行。不同的操作系统具备不同的 解释器。

​ 执行效率低,可以跨平台。

java的执行机制

​ 先编译,再解释

​ 将源文件编译成字节码文件(平台中立文件.class),再将字节码文件进行解释执行。

​ java的设计理念:Write Once Run Anywhere

重要名词解释

​ JVM(Java Virtual Machine)虚拟机

​ 使用软件在不同操作系统中,模拟相同的环境。

​ JRE(Java Runtime Environment)运行环境

​ 包含JVM和解释器,完整的Java运行环境。

​ JDK(Java Development Kit)开发环境

​ 包含JRE+类库+开发工具包(编译器+调试工具)。

类的阐述

​ 同一个源文件中可以定义 多 个类

​ 编译后,每个类都会生成独立的 .class 文件

​ 一个类中,只能有一个主函数,每个类 都可以 有自己的主函数

​ public修饰的类称为公开类,要求类名必须和文件名称 完全 相同,包括大小写

​ 一个源文件中,只能有一个公开类

package

​ 作用:类似于文件夹,用于管理字节码(.class)文件。

​ 带包编译:javac -d . 源文件名称.java(自动生成目录结构)

javac -d . HelloWorld.java

​ 带包运行:java 包名.类名

​ 包名采用域名倒置的规则,例如:

​ cn.com.company.department.group.project.module.XxxClass

代码注释

​ // 单行注释

​ /* 多行注释 */

​ /* 文档注释 / (生成外部文档:javadoc -d . HelloWorld.java)

/**
    外部文档注释
*/

标识符命名

​ 语法规定

​ 可以由:字母、数字、_、$ 组成,但不能以数字开头。

​ 不能与关键字、保留字重名。

​ 约定俗称

​ 望文生义、见名知义。

​ 类名由一个或多个单词组成,每个单词首字母大写(pascal)。

​ 函数名、变量名由一个或多个单词组成,首单词首字母小写,拼接词首字母大写(camel)。

​ 包名全小写。

​ 常量全大写,多个单词用 _ 连接。

变量的概念

​ 变量的组成:数据类型、变量名、值

​ Java中的变量具有严格的数据类型区分。(强类型语言)

​ Java是强类型语言,变量的类型必须与数据的类型一致。

​ 注意:int为整数的默认类型,所以为long类型赋值时,需要在值的后面追加“L”。原因如下图Slot

图片注解:所有变量都要存储在本地变量表中,而本地变量表中的Slot(槽)最大存储位数为32位,如果要存储Long类型值(占据64位),则要在数后加L明确告知计算机申请两个Slot(槽)来存储这个值,并对两个槽内的值进行处理,只能进行原子操作,要用则一起用,要么都不用,否则会成为脏数据,如不加L告知计算机,则会出现超出大小无法在一个Slot(槽)内存储而出现错误。

加注:因为Slot(槽)的存储大小为32位,因此Java则以int(32位)为整数的默认数据类型。

byte short int long

整数

float double

double为浮点数的默认类型,如需为float类型赋值,需要在值的后面追加“F”

float:4字节 1bit符号位,8bits指数位,23bits尾数位

double:8字节 1bit符号位,11bits指数位,52bits尾数位

boolean

可直接赋值true/false或赋值一个结果为true/false的表达式

注意:java中的boolean不能参与算数运算

boolean:1字节 描述状态只占1位,总8位

char

char

String

任何“”之间的字面值

变量赋值

二进制:0b开头

八进制:0开头

十进制:无开头

十六进制:0x开头

public class HelloWorld{

    public static void main(String args[]){

        int i2 = 0b10;              //二进制的赋值方式,输出值为2
        System.out.println(i2);

        int i8 = 010;               //八进制的赋值方法,输出值为8
        System.out.println(i8);

        int i10 = 10;               //十进制的赋值方法,输出值为10
        System.out.println(i10);

        int i16 = 0x10;             //十六进制的赋值方法,输出值为16
        System.out.println(i16);

    }
}

short为char赋值

short 有符号数 -32768 — 32767

char 无符号数 0 — 65535

由于它们取值范围部分重合但有负数处无法赋值,所以直接复制存在风险

直接复制报错,强制类型转换可以解决,但可能会损失精度

double强制转换int

小数位为大于16个9则进位,小于十六个9则直接截掉小数位

例:

int i = 1.9999 9999 9999 9999       //i=2
int j = 1.9999 9999 9999 9991       //i=1
int z = 1.9999 99                   //i=1
int x = 1.9999 9999 9999 9999 9999  //i=2

类型转换

自动类型转换:

两种类型相互兼容。

目标类型 大于 源类型。

强制类型转换:

两种类型相互兼容。

目标类型 小于 源类型。


注:强制类型转换规则:

类型转换规则

自动类型提升

操作数中没有int,均为short/byte,计算结果依旧提升为int

其他情况下提升为两操作数中类型大的一方的类型

特殊:任何类型与String相加(+)时,实为拼接,其结果自动提升为String。

思考:

System.out.println(10+20+"5");          //输出305(String 类型)
System.out.println(10+20+"5"+'4');      //输出3054(String类型)
System.out.println(10+'4'+20+"5");      //输出825(String类型)
//只有与String类型相加为拼接,所以在10与char类型'4'相加时,4转换为ASCII码即52与其相加,所以结果为825

附加:

n=n+1 存在自动的类型提升

n+=1 在有限的位数内,完成自增

byte i = 127;
i=i+1           //错误!i+1超出byte范围,提升至int赋值给类型为byte的i有可能损失精度
i+=1            //无报错,但结果为-128,因为i永远只保留后八位,无论加多少,结果永远在-128——127中循环(如下图)

有限位数自增

三元运算符

三元运算符

控制台输入

导入 java.util.Scanner

声明 Scanner 类型的变量

使用Scanner类中对应的函数(区分类型):

nextInt(); //获得整数

nextDouble(); //获得小数

next(); //获得字符串

next().charAt(0); //获得单个字符

注:如果输入了不匹配的数据,则会产生java.util.InputMismatchException

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值