Java程序内容编写基础

Java程序内容编写基础

以下内容都是有自己学习总结得出,如有错误之处请各位指出。

  1. 可以使用任意的文本编写工具写一个文件名的后缀为.java的文本文件。例如:Hello.java
  2. Java是面向对象的编程语言,要求编写程序的开始就是定义类的开始
public class Hello{//public class是系统定义的关键字,Hello是用户自定义的类名称,
//注意:类名称要求必须和文件名称一致,{}中的内容为用户自定义程序
    public static void main(String[] args){
    //这个方法名称不允许作任何调整,包括大小写,这是程序的执行起始点。
    	 System.out.println("Hello Java!");
    	 //在Java语句中要以分号--;来收尾。 System.out.println用于实现在屏幕上输出字串内容
    	 //字串就是括号内用引号中所包含的字符序列
     }
}
//输出:Hello Java!
  1. 编译程序为字节码文件,其名称和源代码文件一致,只是后缀为.class的二进制文件,JDK中自带了编译器Javac。
    例如刚才的程序的编译程序为:javac Hello.java
    如果有语法错误则编译失败,并进行告错。

  2. 使用解释器java解释执行字节码文件
    java Hello
    注意:这里不是文件名称,而是类名称,所以没有后缀class

如果使用文本编辑工具编写代码,问题在于没有任何提示,编码效率低;而且不停的需要进行切换【编辑发现问题–修改源代码】。所以需要使用IDE工具(集成开发环境),在工具中可以直接编写代码,编译源程序并执行。

Java标识符

标识符是由字母、数字、下划线_或美元符号$组成,但是不可以是数字开头。

标识符是区分大小写,没有长度限制,可以为标识符取任意长度的名字
标识符不允许使用保留字。关键字对Java编译器有特殊的含义,它们可标识数据类型名或程序构造 construct名, java语言中的保留字均用小写字母表示

变量

变量是Java程序中的基本存储单元,它的定义包括变量名、变量类型和作用域几个部分。
例如int k=100; 其中int是数据类型,k是变量名 m

变量名称:在一个方法内部不允许出现多个同名称的变量
变量类型:

  • Java属于强类型编程语言,变量类型一旦声明,则不能进行修改
  • 数据类型可以决定变量所需要的存储空间大小和对应的处理逻辑

int k; 声明一个变量,类型为整形,变量名称为k
int k=100; 声明变量的同时进行初始化
k=12.345; 语法错误,因为已经声明了类型为整形,但是12.345不是整数
d=123; 语法错误,因为Java语法要求对于变量必须是先定义后使用

作用域是指变量的有效范围,一般是在所在花括号范围内

public static void main(String[] args){ 
   { 
          System.out.println(k);//错误1:要求临时变量必须是先定义后使用,必须是先赋初 值后使用
           int k=100;
           System.out.println(k);
   }
           System.out.println(k);
           //错误2:因为k定义在{}内部,所以k只在上面的{}分为内有效,离开了{}则失效,{}外引用k则报错
 }

public static void main(String[] args){   
     int k=99; 
     {      
          System.out.println(k);   
           int k=100; 
           //错误:因为Java是强类型编程语言
           //所以在{}外已经声明了k的类型,在k的有效范围内不允许重新声明
           System.out.println(k);
               }
       System.out.println(k);
 }

Java是强类型语言

每个变量有类型,每个表达式有类型,而且每种类型都是严格定义的。

Java编译器对所有的表达式和参数都要进行类型相容性的检查,以保证类型是兼容的。

任何类型的不匹配都将被报告为错误而不是警告。在编译器完成编译以前,错误必须被改正过来。

在Java语言数据类型可以分为两大类:基本类型和引用类型

基本类型(原生类型)
基本类型是指不能再分解的数据类型,其数据在函数的调用中是以传值方式工作的。

Java是完全面向对象的,但简单数据类型却不是,它们类似于其他大多数非面向对象语言中的简单数据 类型。这样做的原因是出于效率方面的考虑。在面向对象中引入简单数据类型不会对执行效率产生太多的影响。简单数据类型代表单值,而不是复杂的对象。

Java编程语言有八个原始数据类型,可分为4种整型、浮点数、字符型数据和布尔型数据,不会随着计算机类型而变化的,注意Java具有平台无关性,所以不论硬件平台是什么,1B都是8位。(b表示位,B表示字节)

整形

整型有4种:byte字节整型、short短整型、int整型、long长整型

  • java中的数据采用的是补码的存储方式
  • 原码、反码、补码:正数没有区别,最高位为符号位,java中没有无符号整数的概念

八进制整数。以0开头,如0123表示十进制数83,-011表示十进制数-9。

十六进制整数。以0x或0X开头,如0x123表示十进制数291,-0X12表示十进制数-18

二进制整数,以0b或0B开头,例如0b10110010

byte:1B(8b): -128到127
short:2B:-32768到32767
int:4B:-2147483648到2147483647
long:8B:-9223372036854775808到9223372036854775807

在学习过程中我发现,如果将大范围的数据强转为小类型的数据会有精度丢失。

整数类缺省为int类型,如在其后有一个字母“l或者L”表示一个long值 。

//具体数据取值范围的查询方法
public static void main (String[] args){
    System.out.println(Long.MAX_VALUE);//上限
    System.out.println(Integer.MIN_VALUE);//下限
	}

浮点数类型

浮点数类型:float单精度、double双精度

在Java中浮点数无法精确存放,除非使用BigDecimal

float:4B:1.4E-45到3.4028235E38 ,保存7-8位有效数据
double:8B:4.9E-324到1.7976931348623157E308 ,保存15-16位有效数据

float f1=1.23;
float f2=2-0.77f;
//判断f1和非相等,使用f1==f2是错误的
public static void main(String[] args) {
		float k=0;//这里不报错的原因是0为int类型,计算中会自动转换为float
		for(int i=0;i<10;i++){
			k=k+0.1f;//如果不写0.1f则报错,因为系统识别0.1为double类型,则计算结果为double。
		}
		System.out.println(k); //1.0000001
	}

注意:浮点数无法精确存放

字符类型 char

Java中存放字符采用的是Unicode编码字符集,2B,0-65535
字符类型的变量可以当作整数使用

char c=‘a’; 注意:这里使用的是单引号,不是双引号,单引号中只能包含一个字符

Java也提供转义字符,以反斜杠(\)开头,将其后的字符转变为另外的含义

  • \ddd :1到3位8进制数所表示的字符(ddd) 例如’\110’实际就是字符H
  • \uxxxx :1到4位16进制数所表示的字符(xxxx),例如’\u9110’表示字符’鄐’
  • \’ :单引号字符,例如’’’
  • “:双引号字符,例如’”‘实际上是可以的,但是这样写可读性非常差,所以建议使用’"’
  • \ :反斜杠字符

布尔类型 boolean

boolean数据类型有两种文字值:true真和false假 在Java编程语言中boolean类型只允许使用boolean值,在整数类型和boolean类型之间无转换计算 .

boolean bb=0;  //语法错误

基本数据类型转换

  • 小转大自动转换
byte b1=123;
long k1=b1;
double kk=k1;
System.out.println(kk);
  • 大转小需要强制转换–窄化操作,可能会有数据精度丢失
double dd=123.567;
long kk=(int)dd;
System.out.println(kk);
  • 类型转换的语法:
int k=100;
char cc=(char)k; //强制类型转换--窄化操作

char k='d';
System.out.println((int)k);

boolean bb=true;
System.out.println((int)bb);//语法错误,因为boolean类型和数值类型之间没有任何对应关系,所以这里的强转会报语法错误

float f1=123.456;//语法报错,因为系统默认带小数点的数据为double类型,所以123.456是double类型的数据,而声明f1为float,所以这里需要进行数据类型转换或者进行特殊声明。如果浮点数转换为整数是直接截断小数部分。

float f1=(float)123.456;
float f1=123.456f;  //数字末尾的f类似于数字末尾的L,用于进行数据类型的说明,f/F表示这是一个float类型的数据 d/D表示是一个double类型的数据

复合数据类型

复合数据类型包括:class类、interface接口、数组。

null 索引在运行时并没有对应的类型,但它可以被转换为任何类型(不能是简单类型)。在虚拟机中null是一个固定位置上数据,索引类型的默认值就是null

Object b=null;
System.out.println(null==b);//返回为true

//在数据库中bb=null是永不为真,bb!=null是永不为真。只能使用is null或者is not null进行判断
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值