Java 零基础启示录:揭开编程的神秘面纱(一)

请自行查询JDK和IDEA的下载过程以及环境变量配置如何使用。

不推荐使用最新版本,最新版本处于测试阶段,新手请把踩坑的机会交给别人吧。

推荐使用jdk8或者jdk17,相较于新版本更具稳定性。

一.初始java

编程语言只是工具,不同的编程语言有不同的功效,可以根据就业需求进行选择。

writer once,run anyway

   “一次编译,四处运行”

1.集成环境背后原理

通过记事本和cmd 写代码的步骤演示

首先创建JAVA源文件,通过编译器javac编译所需对象生成计算机可以识别的二进制文件,通过命令java在JVM中运行指令

JDK=JRE+开发工具集

JRE=JVM+JAVASE标准类库

(JDK:Java Development Kit即Java开发者工具,JVM:Java Virtue Machine即java虚拟机,JRE:Java Runtime Enviroment即java运行时环境)

1.1创建源文件

步骤一:点击查看显示,勾选文件拓展名,隐藏项目

步骤二:创建java源文件,新建文本文档将.txt改成.java

步骤三:点击‘在记事本中编辑’,即可开始编写第一条代码

eg:打印  hellow word

public class Text{ 
	public static void main(String[ ] args){
		System.out.println("hellow word");
	}
}

步骤四: Ctrl+S保存或者用鼠标手动保存

1.2通过cmd执行源文件

步骤一:在文档的路径中直接输入cmd

步骤二:输入javac 源文件名称,成功后文件夹中将会多出class文件

步骤三:输入java 文件名称,下达指令执行二进制文件

2.入门代码讲解

public class Text{ 
	public static void main(String[ ] args){
		System.out.println("hellow word");
	}
}

1.public class是固定写法

2.该文件中Text为类名(类名需要用大坨峰,即每个单词首字母大写 eg:MaxNum)

类名应当与文件名相同否则会出现编译错误。

3.main是方法名,为程序的入口,一个程序只能有一个入口。

void表示该方法不返回任何值,String[] args是运行时的命令参数

5.System.out.println功能是输出到屏幕

public class 类名{ 
	public static void 方法名(String[ ] args){
		代码内容(可执行的命令)
	}
}

【注意:一个源文件中只能有一个public修饰的类,并且类名和文件名相同】

3.文档注释

注释是为了供人更好观赏阅读,明白你到底在写什么,好的注释习惯可以帮你改写代码时解决一些不必要的麻烦,请认真对待。

3.1要求规范

1.简洁明了,言简意赅,不要长篇大论。

2.内容精确,与代码内容保持一致性

3.确认对象,是国企还是外企

4.积极向上,不要把消极情绪代入代码(注释上传别人也会看到哦~)

3.2注释的使用

单行注释 //注释内容

多行注释 /*注释内容*/

文档注释 /**注释内容*/,可以被javadoc工具解析,生成一套以网页文件形式体现的程序说明文档

注意: 1. 多行注释不能嵌套使用 2. 不论是单行还是多行注释,都不参与编译,即编译之后生成的.class文件中不包含注释信息。

3.3为什么记事本编码无法使用中文

在创建java源文件不使用集成开发环境时,可能会出现乱码致使javac无法编译。

这是由于编码的不一致。记事本使用UTF-8编译存储中文,而cmd用GBK编译,由于编码方式的不同而产生误解,导致数据解析出错,无法得到正确的结果。

解决方案只需要在使用cmd时,javac Text.java修改成javac -encoding utf-8 Text.java

4.标识符

简单来说标识符就是起名方便我们寻找使用,代码需要多人共同编写,作为团队中的一员,标识符最好要有规范性,方便协作。

规则是硬性要求,建议是方便团队合作。

4.1规则:

1.一般由数字字母下划线$组成

2.不能以数字开头

3.不能是关键字,保留字  

4.严格区分大小写bubbleWater,Bubblewater以及BubbleWater是不同的标识符

4.2建议:

类名用大驼峰命名,方法名和变量名用小驼峰命名

(小驼峰命名法:首个单词字母小写其余单词首字母大写)

5.关键字

关键字是被人常用而提前定义的有特殊用途和含义的保留字,例如if,while,byte,char等等

二.数据类型

1.数据类型

一般分为两大类:基本数据类型         引用数据类型

注意:1.无论什么系统数据类型占用的字节数是固定的,所以java语言相较C语言可移植性更高

           2.整型和浮点型默认是有符号整形和有符号浮点型

           3. 整型默认为int型,浮点型默认为double型

字节是计算机中表示空间大小的基本单位,1字节占8个比特位

二进制语言:

1.计算机内部的电子元件(如晶体管)只有两种稳定的状态,通常表示为开和关,或者高电平和低电平。这两种状态正好可以用 0 和 1 来表示,因此二进制成为了计算机处理和存储信息的天然语言。

2.无论是文本、图像、音频还是视频,在计算机中最终都以二进制的形式进行存储和处理。例如,一个字符在计算机中会被赋予一个特定的二进制编码。

我们可以把比特位看成装载信息的工具。每个比特位只能放置一个0或者一个1,而通过不同的排列组合可以得到不同的信息。

至于为什么八个比特位为一个字节这并不影响接下来的学习,如果感兴趣可以私下进行查找。

1KB = 1024 Byte, 1MB = 1024 KB, 1GB = 1024 MB.

2.常量与变量

2.1常量 

程序运行中固定不变的量,常量的值是在运行时确定的。

2.1.1基本数据类型常量
        System.out.println("watch me shine");
        System.out.println('a');
        System.out.println(23);
        System.out.println(3.14);
        System.out.println(false);

1. 字符串常量:由""括起来的,比如“1024”、“watch me shine”、“青柠汽水”。

2. 整形常量:程序中直接写的数字(注意没有小数点),比如:52、1314

3. 浮点数常量:程序中直接写的小数,比如:3.14、6.37

4. 字符常量:由 单引号 括起来的当个字符,比如:‘A’、‘0’

5. 布尔常量:只有两种true和false

6. 空常量:null

2.1.2被final修饰的常量
final int a = 10;

如果一个变量被声明为final,那么它的值在初始化后就不能被再次修改。

2.2变量

程序运行中可以改变的量,变量的值是在编译时确定的。

2.2.1变量的使用

数据类型 变量名 = 初始值

变量需要初始化后才可以使用

初始值不能超过最大值最小值,当不知道初始值定义为多少时,可以定义为0.

eg:

//方法一(定义的同时初始化):
int a = 10;
//方法二(先定义再初始化):
int b;
b = 5;
/*错误的方法:
int c;
System.out.println(c);   
c = 20;  ——>  编译错误*/

长整型变量的初始值后加L或l,推荐加L,l容易出现误判被错看成1

单精度浮点型变量初始值后加F或f

2.2.2数据类型范围的计算
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
/*可以根据MAX_VALUE和MIN_VALUE计算出取值范围
*/
计算方式eg:int占4字节 即4×8=32个比特位 每个整形都是有符号整形,符号占一个比特位,剩下31个位置通过编译器填写0或1,当代码除去符号位都填写1时最大
也就是0111 1111 ... 1111通过等比数列计算最大值为2^31-1
负数最大值计算方法需要通过对补码计算得2^31

Integer是int的包装型,Character是char的包装型,剩余数据类型的包装型首字母大写,例如:long->Long float->Float

注:由于存储内部的复杂性,计算方法,不同计算机系统的处理和精确度的有限性等等因素无法计算范围。

2.2.3整形和浮点型变量选择

根据我们的需求选择整数型或浮点型,就像是仓库储存货物,根据货物的规格选择合适的仓库,否则会出现仓库过小货物过多数据溢出的情况或者货物过少空间浪费。

2.2.4相关计算

通常情况下,只有同一类型的数据才能进行计算。

int a = 1;
int b = 2;
System.out.println(a/b);

int和int型计算结果也为int型,具体讲解请看下文的类型提升。

double a = 1.1;
double b = 1.1;
System.out.println(a*b);//最后的结果为1.2100000000000002

浮点型由符号位,指数位,尾数位组成。并且浮点数不能精确表示每一位,只能精确表示小数点后几位。

 double 类型的内存布局遵守 IEEE 754 标准(和C语言一样),尝试使用有限的内存空间表示可能无限的小数,势必存在一定的精确度误差,因此浮点数是近似值而非准确值。

2.2.5字符型
char c1 = 'a';
char c2 = '加';

字母占一个字节,汉字占两个字节。

char申请的空间大小为两个字节,但是只能放一个字符。

在C语言中使用ASCII码,而java使用unicode编码。用来解决计算机数据交换的标准问题。

Unicode 编码是一种用于字符编码的国际标准,它为世界上几乎所有的字符(包括各种语言的字母、符号、标点等)提供一个唯一的数字编码。

因此整形也可以通过字符类型存储相应的数字编码,但是为了代码的规范性,修改代码时可以直观明了,请不要为难自己和别人。

2.2.6布尔类型

boolean的取值只有true和false,不能用0或者非0表示。

boolean没有明确规定分配多少空间。

3.类型转换

java语言对于数据类型的转换更为严格。

3.1自动类型转换(隐式)

一般为小范围数据类型向大范围数据类型转换。

int s=0;
long u=0;
s=u;//long向int转化出现编译报错
u=s;//int向long转化可以正常转化
double l=0.0;
float o=0.0;
l=o;//float向double转化出现编译错误
o=l;//double向float转化可以正常转化

我们可以将等号看成转化,按照类型从右往左读,右侧范围大于左侧则可以默认转化。

3.2强制类型转换(显式)

大范围向小范围数据类型转换,容易造成数据溢出从而致使程序出现错误,因此不建议使用强制数据类型转换,学习只是为了了解。

3.2.1方法
int a=0;
long b=0;
a=(long)b;
/*byte c=256;编译失败*/
byte c=(byte)256;//超出范围也可以通过小范围强制转化成大范围
3.2.2数据溢出

(1)上溢

  • 当数值增加超过了数据类型所能表示的最大值时,会发生上溢。此时,数值会“回绕”到该数据类型的最小值重新开始计数。

(2)下溢

  • 当数值减小超过了数据类型所能表示的最小值时,会发生下溢。此时,数值会“回绕”到该数据类型的最大值重新开始计数。
byte a=129;
System.out.println(a);//结果是-127

byte最大值127,最小值-128,所以上溢。

强制类型转换不一定能成功,不相干的类型不能互相转换

4.类型提升

不同类型的数据之间相互运算时,数据类型小的会被提升到数据类型大的。

int a=0;
long b=0;
int c=a+b;//编译错误,int自动类型提升为long,long=long+long
long d=a+b;
//可以改成int c=(int)a+b;不建议用强制类型转化

小于四个字节的整形会自动转换成int型。

byte a=5;
byte b=6;
byte c=a+b;//编译错误
int c=a+b;//正确

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值