java-初识

本文主要介绍java相关的工具概念,基本程序写法,常见注意事项以及对数据类型与操作符解析。

JDK:java的开发工具集合。

JRE:java程序的运行环境。

JVM:java虚拟机,虚拟机是用底层代码实现的软件,该软件可模拟机器的硬件。

三者关系:JDK包含JRE,JRE包含JVM。

第一个java程序:

public class HelloWorld{

public static void main(String [] args){

System.out.println("hello");

}

}

其中public为访问权限修饰符,可用来修饰变量,方法,类等使其具有不同的访问权限。

class为关键字,用来声明一个类。例如此处HelloWorld就是一个类。

注意:每一个类在编译环节都会生成对应的字节码文件

main可在一个工程中多个文件中创建,当使用idea(编译环境)运行时目前在哪个文件中就运行哪个main方法。

标准的方法定义写法:

【访问修饰符】【static】返回值类型 方法名 (形式参数列表){

方法体;

}

System.out.println(); 为输出语句,输出括号内的内容并换行,这里的println可以替换为别的方法:

println打印数据并换行,为java中最常用的输出语句。

print仅打印数据。

printf使用控制符打印数据。

注意:main方法有形式参数,参数类型为字符串数组。

使用方法:使用javac编译完某文件之后,java 文件名运行该文件时在后面可根若干个由空格隔开的字符串,这些字符串都会被记入main的形式参数中,可以在main中使用该字符串数组打印出各个字符串元素。

在java程序中所有程序都写在类里面。

java中一个文件可以有多个类但是每个文件中只能有一个public修饰的类,也并不是说一个文件中必须要有public修饰的类。

java具有跨平台性:一次编译到处运行指的是使用javac编译某源代码文件后该文件后缀变成class,文件中的代码全部被翻译为字节码(二进制码),在安装了虚拟机的机器上该字节码都可运行,没有阻碍。

常见的错误:

1.源文件名后缀不是java,解决方法:在菜单中将文件扩展名调出之后修改

2.类名与文件名不一致,此处指的是public修饰的类

3.main方法写错

4.方法中语句没有以分号结尾

5.中文格式的括号分号等

6.jdk未完全配置,操作系统不能识别javac,java命令

注释:

注释部分的数据不参与编译运行。

注释有三种方法:

1.单行注释:// 注释内容

2.多行注释:/* 注释内容 */

3.文档注释:/** 注释内容 */   常用注释内容为方法与类

注意:多行注释不能嵌套使用

标识符:

标识符中可以包含:字母,数字,下划线与美元符号。

注意:标识符不能以数字开头,不能是关键字,并且严格区分大小写。、

命名规则:

局部变量,方法:使用小驼峰命名法(首单词首字母小写,其他单词首字母大写)

其他的如:类等可使用大驼峰命名法命名(单词首字母大写)。

关键字:由java语言提前定义好的,含有特殊含义的标识符或保留字。
部分关键字:

 

数据类型与变量:

常量:在程序运行过程中值不可改变的量。

字面常量:每一个给出来的数值,字符,字符串等如:10,'a',"asd",ture。

字面常量的分类:

1.字符串常量      2.整型常量

3.浮点数常量      4.字符常量

5.布尔常量          6.空常量

数据类型:分为基本数据类型与引用数据类型

只有基本数据类型具有包装类

数据类型可以用来定义变量的类型。

基本数据类型:

整型:byte,char,short,int,long

浮点型:float,double

布尔类型:boolean(取值只有ture与flase,并且不能隐式与强制类型转换为其他类型)

引用数据类型包括:数组,String,类,接口,枚举等等

 基本数据类型表格:

不管在什么样的机器中java程序中类型都是有唯一指定大小的,使得java程序具有跨平台性。

注意:整型与浮点型都是有符号的,没有无符号概念。

注意:整型数据默认为int型,浮点型数据默认为double型。

变量:在程序运行当中可以被修改值的量

可以使用数据类型来定义(并规定)变量的储存空间大小与取值范围。

局部变量没有初始值,必须在使用之前赋值,否则编译期间会检查出并报错。

整型(int):java规定:

不管在什么样的机器中,int整型大小都为4个字节。

2.int没有所谓的无符号整数概念,int可表示正负数。

32个bit位,最高位为符号位,其他位都是数值位。

最大值:2^31-1 最小值:-2^31

int类型在储存时占用四个字节,最上位为符号位,其他(31)位为数值位,由此可以得出int数据范围。

包装类:每个基本数据类型都会对应一个类类型,这个类类型被称为包装类。

int类型的包装类为integer。

Integer.MAN_VALUE表示int类型的最大值,最小值同理。

长整型(long):java规定:

不管在什么样的机器中,long类型都占8个字节。

没有无符号长整型概念。

最大值(Long.MAX_VALUE):2^63-1 最小值:-2^63

在给long类型变量赋值时一般在数值后跟一个L(一般不写小写L,小写l与1不好区分)来说明该值为长整型的数值。

long的包装类类型为Long。

短整型(short):

不管在什么样的机器中,short类型都占2个字节。

没有无符号短整型概念。

最大值(Short.MAX_VALUE):2^15-1 最小值:-2^15

short的包装类类型为Short。

字节型(byte):

不管在什么样的机器中,byte类型都占1个字节。

没有无符号byte型概念。

最大值127,最小值-128

byte的包装类类型为Byte。

注意:在赋值时编译器会自动检查该数值是否超出该字面常量的类型(字面常量有默认类型,或者如a=100L其中的L规定了字面常量100的类型为long类型)的取值范围,超出则报错。

整型提升:

整型提升的发生场景:表达式具有运算符时。

如:byte a=127;

byte b=a+1;其中1默认为整型数据,(a+1)赋给b时a会发生整型提升结果为为整型类型,赋值时结果与变量类型不兼容会报错,需要改为:byte b=(byte)(a+1)

这里的127为字面常量直接赋值给byte时不用强制类型转换。

需要强制类型转换的场景:

直接赋值的时候值超过该变量的取值范围

如:byte a=128; 此时128超出byte的取值范围,必须强制类型转换。

或者 赋值时有不同类型的变量参与赋值

如:int a=1; byte b=a;a与b类型不相等,错误。 正确写法为byte b=(byte)a;

类型的转换:说明你为这次类型转换而可能产生的数值损失或者异常负责。

此时byte取了a+1这个int类型的一个字节的数据,根据循环可知byte此时的值为-128.(取出一个字节的数据后经源反补转换得到的值)

浮点型:

java规定:float大小为4个字节,double大小为8个字节。

float赋值小数时应在数值后面加上f声明。因为浮点型数据默认为double类型。

double的精度更高,故一般使用double而不是float编程。

封装类: float-Float double-Double

浮点数类型尝试用有限的存储空间表示可能无限的小数,所以必定会存在一定的精度误差(用浮点型变量存储0也会有误差),浮点数类型的值是一个近似值,不是精确值。

字符型:

字符本质上是一个整数,所以字符类型赋值时整数,该整数将会转化为对应字符。

不管是Unicode中的什么字符都只占用两个字节。

取值范围:0-65535

C语言使用ASCLL,字符元素有256个

但java使用Unicode字符集,该字符集包含很多语言,如中文,拉丁文等等

一般我们使用时只需要记住'0'-'9','a'-'z','A'-'Z'即可,char类型的包装类为Character。

注意:在使用中文字符的文件后执行javac该文件可能会报错,

若要编译Test.java(该文件中带有中文字符)应写为:javac -encoding UTF-8 Test.java

字符编码:GDK UTF-8等等

布尔型变量:

boolean类型只能有两个取值:ture或者false 没有规定的明确大小,非常特殊。

包装类为Boolean。

类型转换:自动(隐式)类型转换与强制类型转换

自动(隐式)类型转换:数据范围小的数据类型自动转化为数据范围大的类型。

该过程在代码编译时由编译器自动处理,编译器在编译环节将较小的数据类型转化为较大的数据类型。

如上int a在赋值给long b时 a由int类型被自动转换为long类型后进行赋值。

强制(显式)类型转换:

当把范围大的数据类型转化为范围小的就会发生数据截断损失,强制类型转换表示自己承担数据损失的后果。

强制类型转换不一定能成功,如boolean类型不能转换为其他类型。

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

所有小于4个字节的数据进行运算时会先提升为4个字节的类型(int),然后再参与运算。

字符串类型:

java中String str="hello" 和C语言中的字符串不同,这个字符串结尾没有\0,java没有这种说法。

若字符串两边有+,则该+为连接符,作用为连接两边的内容而不是做加法。

对字符串类变量的用法:

str.length()返回值为字符串中字符个数

str.toUpperCase()返回值为该字符串中小写字母转化为大写字母后的字符串

str.trim()返回值为该字符串去除前导零后的字符串

str.replace("字符串1","字符串2");的返回值为将原字符串中所有字符串1替换为字符串2而得到的字符串。

 

第一个输出语句中字符串与a结合成新的字符串,之后又与b结合成新字符串

第二个输出语句中(a+b)优先计算,值与前面的字符串结合成新字符串

第三个输出语句中a与b先做加法后与后字符串结合成新字符串

结果:

int数据与String数据相互转换

int转换为String方法:

1.将数值与空字符串连接后赋给新的字符串变量

2.使用方法:String.valueOf(num)

String转换为int方法:

使用方法:Interger.parselnt(str);

 

运算符:对操作数进行操作时使用的符号,不同运算符作用不同。

表达式:运算符和操作数结合所呈现出来的算式。

常见的数学运算符:+.- * / %

注意:若要使用/进行小数运算,必须将分母或分子先转化为浮点型数据类型,否则结果为整型数据。

并且若除数(右操作数)为0时系统会抛出异常并结束程序。做除法和取模时右操作数不能为0.

余数结果正负号与左操作数的符号一致,做余数操作时可将两边操作数的符号忽略,求完余数后加上符号就行。

取余操作的操作数也可以是浮点数类型,结果也是浮点数类型。

两侧操作数类型不一致时,类型小的会向类型大的提升,结果的类型为大类型。

增量操作符:+=,-=,*=,/=,%=

如:a增量操作符b+1,实质上为:a=a(增量操作)(b+1),操作符右端为一个整体

增量运算符内含强制类型转换,能将结果的类型强转为需要赋值的变量的类型。

关系运算符(比较运算符):<,>,<=,>=,==,!=

结果只会是ture或者false。

逻辑运算符(三种):&&,||,!

逻辑运算符的操作数都应为布尔表达式。

而&&与||又叫短路逻辑运算符

若根据&&或||的左表达式就能知道最终结果则右表达式不执行。

&&结果判定:全真为真。

||结果判定:有真为真。

逻辑非使用格式:!(布尔表达式),布尔表达式有值,!表示与该布尔值相反。

位运算符(四种):&,^,|,~

&按位与:两个数对应的比特位都为1,结果才为1

^按位异或:两个数对应比特位不同则为1,对应位相同为0

|按位或:两个数对应比特位只要有1,结果就是1

~按位取反:把二进制序列中所有0变为1,所有1变为0

移位运算符:

左移:<< 二进制序列整体往左移一位,右端补0 对于正数左移一位一般有乘二效果

右移:>> 二进制序列整体往右移一位,最高位补之前的符号 对于正数右移一位一般有除二效果

无符号右移:>>> 二进制序列整体往右移一位,最高位补0

条件运算符:

条件运算符只有一个即三目运算符

表达式1?表达式2:表达式3

表达式1为ture,结果为表达式2的值,否则为表达式3的值

嵌套使用时   ?与最靠近的:配套结合成整体。

END。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值