JavaSE之路-01
2021-04-01 00:27
标签:-- java代码 科学计数法 生成 解释 stat 做什么 代码 public 问题: 为什么在编程之前都需要进行环境搭建,到底在做什么事情? 编程语言(自然语言)-----编译 ----> 机器指令 搭建环境,最重要的事之一就是安装编译器 问题:java跨平台,什么是跨平台,为什么能跨平台? 平台:操作系统 或 CPU 架构 跨平台:一次编译后的生成的目标文件,可以在各个平台直接运行。不需要重复的编译 例如:C语言 print: ? 各个平台的机器指令不同 ? --编译1 ----> 101010101(机器码) ? --编译2------> 10101000(机器码) Java 生成的目标文件.class 字节码文件,不在操作系统上直接运行,而是在java虚拟机(JVM)上运行。这就隔离了各个操作系统的指令集的不同。 .class ------Window JVM-----> Window机器码 .class ------ Linux JVM -----> Linux 机器码 .class ------ Mac JVM -----> Mac 机器码 前提:要在各个平台上安装不同版本的虚拟机JVM 问题:JDK、JRE、JVM分别是什么,有什么包含关系? JDK 包含JRE,JRE包含JVM JVM:java虚拟机,作用就是执行.class文件,java代码的真正执行者,负责将.class 翻译为该平台的指令,然后执行。 JRE:java运行环境,核心Java虚拟机,还有一些解释器等等,通过JRE,我们能真正运行Java项目,(只能运行,不能编译),包含jvm,解释器等,总体负责java代码的运行。 JDK:JDK不单可以运行,还可以进行编译。编译器在JDK中装着。Java开发工具包,包含编译器、jre、核心类库等,总体负责编译+执行java代码。 不能单独装JVM,能单独装JRE,JDK 综上,搭建Java开发环境,其实就是安装jdk软件,既可以编译java程序,也可以执行java程序。 变量 数据类型 运算符 流程控制 数组 函数 字符串 变量的作用域: 包含它的最近的一对大括号。 全局变量: 变量的作用域是整个类。(其实就是类的属性) 局部变量: ? 除了全局变量,就是局部变量(在方法中、代码块中定义的变量) 变量的初始化: 变量要先赋值(初始化),再使用,只有初始化后才会分配对应的内存空间。 变量的命名规则 由数字、字母、下划线、$、以及各国的语言文字组成,不能以数字开头,不能包含关键字。“驼峰原则" 基础数据类型:byte1 short2 char2 int4 long8 float4 double 8 boolean1 引用数据类型:类 计算机是 0 和 1 的世界,为什么能存储字符呢? 字符 -- (编码)----数字 每种编码,都有一张码表,表示字符与数字的对应关系。 char c = ‘你‘ ,参照那个码表? 参照 Unicode表 如何验证到底参照那个码表? 所以,char a = ‘字符‘,参照码表将字符转换为数字,然后存储。 char a = 20320; //是否可以? char 2 个字节 当然可以,但麻烦 其实,字符在内存中也是数字,只不过是一种数字的特殊表示形式。 char a = 50403; 是否可以? 不可以,超出数字表示范围,报错。 char 参照 unicode 表转换,unicode 目前收录了14万个字符,char 只占两个字节,只能表示其中的一部分。超过两个字节,char 无法表示。 **int long ** int 所能表示的最大数字:用到 了封装类。 在编译时,出现数字,默认是用四个字节去存储的。 加L的作用:使得编译时,拿更大的空间去存储数字,而不是默认的四个字节去存储。 float,以科学计数法在内存模型中表示,不再是补码。 long 占8个字节,float 占4个字节,请问那个能表示的数字大? float 大,并且float类型比 long 是高等级。 验证: 自动转换、强制转换 A a,变量a是A类型; B b ,变量b是B类型; 请问在那些情况下,可以进行a = b 这样的赋值? 只有如下3种情况: byte1 short2 char2 int4 long8 float4 double 8 低 高 低等级可以自动转换为高等级 高等级需要强制转换为低等级 为什么?低转高,自动转换,高转低,强转 因为低转高,没有安全隐患,一定能转。高转低 ,存在安全隐患(精度损失,范围),所以需要程序员显示的声明强制(后果自负) 所以: int a =‘我‘;//正确 自动转换也会发生在运算时: 迷惑性: JavaSE之路-01 标签:-- java代码 科学计数法 生成 解释 stat 做什么 代码 public 原文地址:https://www.cnblogs.com/moshanghuai/p/13549782.htmlJavaSE之路-01
1、环境搭建
2、跨平台
3、JDK、JRE、JVM
基础语法
1)变量
String s = null;//注意这一点,不要忘了给初值
if(a>0){
s = "ncdj";
}
System.out.println(s);
2)数据类型
public class A1 {
public static void main(String[] args) {
char c = ‘你‘;
System.out.println((int)c);
//20320
//GDK中 ‘你’对应的是 C4e3
//Unicode 中‘你’ 对应的是 4F60
//是16进制,10进制为
System.out.println("gdk:"+ 0xc4e3);
System.out.println("Unicode:"+ 0x4F60);
// gdk:50403
// Unicode:20320
//三种写法
char c2 = ‘你‘;
char c3 = 0x20320;
char c4 = ‘\u20320‘ //直接写Unicode编码
}
}
public class A2 {
public static void main(String[] args) {
//打印int能表示最大数字: 2^31 -1
System.out.println(Integer.MAX_VALUE);
}
}
2147483647
long a = 2147483648L;//错误 ,必须要加L
System.out.println(Float.MAX_VALUE > Long.MAX_VALUE);
true
char a = ‘我‘
a = a +1;
1 是int ,int + char = int ,int 类型赋值给char 出错
//正确写法:
a = (char)(a+1);
char a = ‘我‘ +1; //正确,编译时期就计算出了‘我’+1的具体值,不会等到自动转换环境。‘我’就相当于一个数字
//类似于
int i =10;
byte d = i+1;//错误
byte d = 10 +1;//正确
char b=‘你‘;
b+=1;//正确,记住;
上一篇:JAVA 异常处理 捕获与抛出
下一篇:Java网络编程