02数据基本格式以及基本运算符

一切之始-Hello World

package com.sdut;

public class HelloWorld {
	public static void main(String[] args) {
		System.out.println("Hello World");
	}
}

从Hello World看Java

第一行package,包名以及所在包的直接详细路径。

public 访问权限修饰符

static 功能修饰符

void 返回类型

Java编写结构概述

类的结构:

class 类名 {

​ 类体

}

一个Java文件中只有一个public修饰的类,而且public修饰的类名必须与文件名一致。

方法的结构 :

方法的修饰符 方法的返回类型 方法名称 (参数列表) {

​ 方法体

}

补充:方法的修饰符有两种,一种是以public为代表的访问修饰符,另一种是以static为代表的功能修饰符,当然,一个方法不一定同时拥有两个修饰符。

main方法是Java程序的入口,所以一个Java文件有且只有一个main方法,但是一个Java工程可以有多个main方法,但是主入口只能有一个。当然在后续的JavaWeb,可以没有main方法,但是那只能是Java servlet

Java注释(eclipse注释)

两个连续的//,代表是单行注释。

一个/*代表的是多行注释。

/**代表的是文档注释,即一整个Java文档的注释。我们使用的一些方法以及类鼠标放上去都会出现一些关于它们的注解,这就是JavaDoc(文档注释)

Java中的一些命名规则

标识符(类名、方法名、变量名)的命名:包含有字母数字_$,数字不能开头。不能用关键字命名。

例如:int a1 = 13; interesting testHelloWorld = 123;(小驼峰命名法)

其他的命名跟变量的命名规则相似,只是类名为大驼峰命名法

ps:标识符是大小写敏感的。

public class HelloWorld {

}

​ (大驼峰命名法)

基本数据类型(八种)

类型定义变量所占内存大小对应的引用类型取值范围默认值
字节型bytebyte b1 = 1b/B;4btit 1byteByte[-27,27-1](byte)0
短整型shortshort s1 = 1s/S;8bit 2byteShort[-215,215-1](short)0
整型intint i1 = 12;16bit 4byteInteger有符号int[-231,231-1],无符号int[0,2^31-1]0
长整型longlong l1 = 123l/L;32bit 8byteLong[-263,263-1]0L
单精度浮点型floatfloat f1 = 1.1f/F;16bit 4byteFloat[1.401298e-45,3.402823e+38]0.0f
双精度浮点型doubledouble d1 = 1.1d/D;32bit 8byteDouble[4.9000000e-324,1.797693e+308]0.0d
字符型charchar c1 = ‘a’;8bit 2byteCharacter[\u0000,\uFFFF]或者[0,65535]\u000
布尔型booleanboolean b1 = false;/Booleantrue或falsefalse

补充:double类型的数据在定义赋值时可以不用书写d,因为他是浮点型默认变量类型。boolean类型的变量只有两种变量值即为true或false。

除基本数据类型之外的都为引用类型,而引用类型的默认值都为NULL(空)。

ps:字符类型的需要用单引号包裹,而字符串类型,需要用双引号包裹。

四个整型的基本数据类型都会有进制之间的区别,前缀0为8进制,前缀0x为十六进制

类型之间的强制转换与自动转换

自动转换,类型之间的自动转换发生在,当精度小的往精度高的转换时。

强制类型转换,是需要我们代码手动书写转换,这种转换往往便随着精度丢失,精度丢失的规则是**向下对齐**,即精度高的转换为精度低的,精度高的部分会被丢弃。

整型,常量,字符型数据是可以混合运算的,运算中会将变量的类型转换为同一类型再进行运算。

转换的优先级(从低到高):byte,short,char < int < long < flaot < double.

ps:布尔类型的数据不能进行类型之间的转换。

基本数据类型与引用类型的一些小区别(慢慢补充)

基本数据类型:保存在栈的内存中的简单的数据,即这种值完全保存在内存中的一个位置。

引用数据类型:保存在栈内存中的引用名指向保存在堆中的对象,类中的一个指针。

Integer类型与Int类型

package com.sdut;

public class HelloWorld {
	public static void main(String[] args) {
		int i0 = 10;
		int i1 = 10;
		Integer i2 = 10;
		Integer i3 = 10;
		Integer i4 = new Integer(10);
		Integer i5 = new Integer(10);
		
		Integer i6 = 199;
		Integer i7 = 199;
		System.out.println(i0 == i1);
		System.out.println(i0 == i2);
		System.out.println(i2 == i3);
		System.out.println(i3 == i4);
		System.out.println(i4 == i5);
		System.out.println(i6 == i7);
	}
}

输出结果:

true
true
true
false
false
false

Integer拥有一个静态内部类,IntegerCache。里面有一个cache[],即为Integer常量池,常量池的范围[-128,127]。

最后一个位置为false,因为超出了cache常量池,所以,产生了两个不同的对象,存放的地址不同。

i2 与 i3 为true,因为两个的值再cache常量池内,所以两个均为cache常量池产生的对象,即为一个对象,所以存放地址相同。

i4 与 i5 因为是人为的在堆中开辟两个空间来存放10,所以每一个都产生了一个对象,所以地址不一样。

浅说堆栈

Java含有两种内存,可以说把内存分为两种:堆内存与栈内存

Java中的堆栈是不可以手动设置的,Java自动管理堆栈。

栈的优势是存取速度较快,缺点是存取大小与存在时间必须是确定的。

堆的优势是动态分配内存大小,Java拥有垃圾处理器,所以生存周期也可以不是确定的。缺点是动态存取内存,存取速度较慢。

基本数据类型都是存放在栈内存中即,在栈中开辟内存空间存放变量与值,程序结束或者所在模块结束,内存释放。

引用数据类型,或者通俗的说需要new的数据类型,会在栈中开辟内存空间,存放变量,而会在堆中开辟空间存放实体值,栈中变量存取的是内存地址用来指向堆中的实体值。当栈中的变量随着程序结束消失或者认为的不让它指向堆中的实体值时,实体值会被JVM垃圾回收机制回收。

堆栈的各自的特点

函数中定义的基本类型变量,对象的引用变量都在函数的栈内存中分配。
栈内存特点,数数据一执行完毕,变量会立即释放,节约内存空间。
栈内存中的数据,没有默认初始化值,需要手动设置。

堆内存用来存放new创建的对象和数组。
堆内存中所有的实体都有内存地址值。
堆内存中的实体是用来封装数据的,这些数据都有默认初始化值。
堆内存中的实体不再被指向时,JVM启动垃圾回收机制,自动清除,这也是JAVA优于C++的表现之一(C++中需要程序员手动清除)。

方法及变量

变量的分类

成员变量(全局变量)

1.静态变量(static修饰)

2.实例变量(无static修饰)

局部变量

1.参数变量

2.循环变量

变量的作用范围

局部变量

方法执行时被创建,方法结束后被销毁,作用在方法或者说方法的{}范围内。

实例变量

对象创建时创建,对象销毁时销毁,在类的范围内有效。

静态变量

该类首次访问时创建,程序结束时销毁。该类的所有对象共用一个静态变量。

ps:public等访问修饰符 不能用于局部变量,可以用于成员变量。

默认值

静态变量:类使用时具有默认值

实例变量:类实例化时具有默认值

局部变量:局部变量没有默认值,所有的局部变量必须初始化之后才能够被使用。

方法的分类

成员方法

​ 静态方法

​ 实例方法

构造方法

主方法

ps:主方法为程序的入口,一般格式为

public class HelloWorld {
	public static void main(String[] args) {
		
	}
}	

构造方法

当一个类的对象被创建时,构造方法用来初始化该对象。

构造方法的名字与类名一致,构造方法没有返回类型,方法体没有语句,但是可以重写构造方法。

没有定义构造方法时,会调用默认的构造方法。

Java运算符

算术运算符

名称语句
+a+b
-a-b
*a*b
/a/b
取余%a%b
自增++a++或++a (a = a + 1)
自减a–或--a (a = a - 1)

ps:取余及取余数,5%3 = 2;自增或自减,当运算符在变量前面,即先使用变量再进行自增或自减,反之,先自增或者自减再使用变量。

+还会用于字符串的拼接

代码

public class HelloWorld {
	public static void main(String[] args) {
		String a = "aa";
		String b = "bb";
		System.out.println(a + b);
	}
}

输出结果为:aabb

赋值运算符

赋值运算符就一个等于号 =

即 a = b;

赋值运算符与算术运算符的结合

名称语句
加等于+=a += b; (a = a + b;)
减等于-=a -= b; (a = a - b;)
乘等于*=a *= b; (a = a * b;)
除等于/=a /= b; (a = a / b;)
取余等于%=a %= b; (a = a % b;)

比较运算符

名称语句
判断是否相等==a == b
判断是否不等!=a != b
判断是否大于>a > b
判断是否小于<a < b
判断是否大于等于>=a >= b
判断是否小于等于<=a <= b

逻辑运算符

名称语句
逻辑与&a & b
逻辑或|a | b
逻辑非!a = !b
逻辑异或^a ^ b
短路与&&a && b
短路或||a || b
aba & ba | b!aa ^ ba && ba || b
truetruetruetruefalsefalsetruetrue
truefalsefalsetruefalsetruefalsetrue
falsetruefalsetruetruetruefalsetrue
falsefalsefalsefalsetruefalsefalsefalse

ps:短路与,短路或。短路的意思为当前面的或者说某一个语句已经能决定整个逻辑表达式的结果,后面的语句不再执行。

即 a > b && a ++

若a > b 为假,即整个语句必定为假,所以后面的a不会再执行递增运算

或a > b || a ++

若 a > b 为真,即整个语句必定为真,所以后面的a不会再执行递增运算

三目运算符(三目表达式)

c = a > b ? a : b;

即 判断a是否大于b,笼统的说,即为表达式是否成立,是否为真,若为真,则执行第一个语句并赋值给c,若为假,则执行第二个语句,并赋值给c。

位运算符

所有的位运算符都是建立在二进制运算的基础上

名称语句
&a & b
|a | b
!a = ! b
异或^a ^ b
左移位<<a << 1
右移位>>a >> 1
无符号右移>>>a >>> 1

ps:如果a(二进制)等于 0000 0010,即十进制的2。b(二进制)等于 0000 0011,即十进制的3。

a & b = 0000 0010

a | b = 0000 0011

a ^ b = 0000 0001

a << 1 = 0000 0100

a >> 1 = 0000 0001

a >>> 1 = 0000 0001

运算符的优先级

优先级运算符结合性
1[ ] . ( ) (方法调用)从左向右
2! ~ ++ – +(一元运算符)- (一元运算符) ( )(强制类型转换)new从右向左
3* / %从左向右
4+ -从左向右
5<< >> >>>从左向右
6< <= > >= instanceof从左向右
7== !=从左向右
8&从左向右
9^从左向右
10|从左向右
11&&从左向右
12||从左向右
13?:(三目运算符)从右向左
14= += -= *= /= %= &= |= ^= <<= >>= >>>=从右向左
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值