Java学习之路-(数据类型、运算符、修饰符)

1.数据类型

数据类型分类

  • 基本数据类型:整数、浮点数、字符、布尔
  • 引用数据类型:类、数组、接口

基本数据类型

数据类型关键字内存占用取值范围
字节型byte1个字节-128~127
短整型short2个字节-32768~32767
整型int(默认)4个字节-2的31次方~2的31次方-1
长整型long8个字节-2的63次方~2的63次方-1
单精度浮点数float4个字节1.4013E-45~3.4028E+38
双精度浮点数double(默认)8个字节4.9E-324~1.7977E+308
字符型char2个字节0-65535
布尔类型boolean1个字节true,false

定义变量
三要素:数据类型、变量名、数据值;

public class Variable {
	public static void main(String[] args) {
		// 格式: 数据类型 变量名 = 数据值;
		byte b = 100;      
		System.out.println(b); 
		long l = 12345678900L;         
		System.out.println(l);        
		//定义单精度浮点型变量         
		float f = 5.5F;         
		System.out.println(f);         
		//定义双精度浮点型变量         
		double d = 8.5;         
		System.out.println(d); 
	}
}

2.数据类型转换

  • 自动转换
    • 将取值范围小的类型转换为取值范围更大的类型
    • 转换规则:byte/short/char --> int --> long --> float --> double
public static void main(String[] args) {     
	int i = 1;     
	byte b = 2;    
	// byte x = b + i; // 报错        
	//int类型和byte类型运算,结果是int类型     
	int j = b + i;     
	System.out.println(j); 
}
  • 强制转换
    • 将取值范围大的转换称取值范围小的类型
// 格式:type 变量名 = (type) 常量;
public static void main(String[] args) {
	short s = 1;
	s = s + 1; //编译失败
	s = short(s + 1); //编译成功
	/*
	出现编译失败        
	s和1做运算的时候,1是int类型,s会被提升为int类型        
	s+1后的结果是int类型,将结果在赋值会short类型时发生错误        
	short内存2个字节,int类型4个字节        
	必须将int强制转成short才能完成赋值
	*/
}

常见的问题

public static void main(String[] args){  
	byte b1=1;   
	byte b2=2;   
	// 常量的运算,不影响数据类型,相当于将3赋值b3,属于byte范围,编译正确 
	byte b3=1 + 2;  
	// 变量间的运算结果不确定,编译器默认会以int处理,但是int类型无法赋值给byte,编译报错
	byte b4=b1 + b2;  
	System.out.println(b3);   		
	System.out.println(b4); 
}

3.运算符

算数运算符
包括常见的: + - * / % ++ - -

// 变量a自己加1,将加1后的结果赋值给b,也就是说a先计算。a和b的结果都是2。
public static void main(String[] args) {     
	int a = 1;     
	int b = ++a;     
	ystem.out.println(a);//计算结果是2     
	System.out.println(b);//计算结果是2 
}

// :变量a先把自己的值1,赋值给变量b,此时变量b的值就是1,变量a自己再加1。a的结果是2,b 的结果是1。
public static void main(String[] args) {     
	int a = 1;    
	int b = a++;     
	System.out.println(a);//计算结果是2     
	System.out.println(b);//计算结果是1 
}


// + 符号在遇到字符串的时候,表示连接、拼接的含义。 
public static void main(String[] args){   
	System.out.println("5+5="+5+5);//输出5+5=55     
}

赋值运算符
常见的:*= += -= = /= %=

public static void main(String[] args){     
	int i = 5;     
	i+=5;//计算方式 i=i+5 变量i先加5,再赋值变量i     
	System.out.println(i); //输出结果是10  
}

比较运算符
常见的:== > < >= <= !=

// 比较运算符,是两个数据之间进行比较的运算,运算结果都是布尔值 true 或者 false 。
public static void main(String[] args) {     
	System.out.println(1==1);//true     
	System.out.println(1<2);//true     
	System.out.println(3>4);//false     
	System.out.println(3<=4);//true     
	System.out.println(3>=4);//false     
	System.out.println(3!=4);//true }

逻辑运算符

/*
&&: 与
||:或
!:非
*/
public static void main(String[] args)  {     
	System.out.println(true && true);//true     
	System.out.println(true && false);//false     
	System.out.println(false && true);//false      
	System.out.println(false || false);//falase     
	System.out.println(false || true);//true     
	System.out.println(true || false);//true    
	System.out.println(!false);//true }

三元运算符

// 数据类型 变量名 = (条件判断) true结果:false结果
public static void main(String[] args) {     
	int i = (1==2 ? 100 : 200);     
	System.out.println(i);//200     
	int j = (3<=4 ? 500 : 600);     
	System.out.println(j);//500 
}

4.函数的定义

/*
格式:
修饰符 返回值类型 方法名 (参数列表) {
	code
	return;
}
*/ 

// 练习:定义一个方法 并在main中调用
public static void main(String[] args) {     
	//调用定义的方法operator     
	operator(); 
} 
//定义方法,方法中定义三元运算符 
public static void operator() {     
	int i = 0;     
	i = (1==2 ? 100:200);     
	System.out.println(i);     
	int j = 0 ;     
	j = (3<=4 ? 500:600);     
	System.out.println(j); 
}
  • 定义函数的注意事项
    • 方法必须定义在一个类中方法外
    • 方法不能定义在另一个方法的里面
public class Demo {     
	public static void main(String[] args){     	
	}     
	//正确写法,类中,main方法外面可以定义方法     
	public static void method(){
	} 
}

public class Demo {     
	public static void main(String[] args){         
		//错误写法,一个方法不能定义在另一方法内部         
		public static void method(){
		}     
	} 
}

5.修饰符

在这里插入图片描述

类修饰符

  • 访问控制修饰符:公共类修饰符public
  • 非访问控制修饰符:abstract 抽象类修饰符,最终类修饰符 final
    • public:Java 语言中类的访问控制符只有 public 即公共的。每个 Java 程序的有且只有一个类是 public,它被称为主类 ,其他外部类无访问控制修饰符,具有包访问性。
      注意一个类的内部类可以被其他访问控制修饰符protected、default、private修饰,相当于类的成员。
    • 抽象类修饰符 abstract :用 abstract 修饰符修饰的类,被称为抽象类。
    • 最终类修饰符 final :当一个类不能被继承时可用修饰符 final修饰为最终类。被定义为 final 的类通常是一些有固定作用、用来完成某 种标准功能的类。
    • 类缺省访问控制符:如果一个类没有访问控制符,说明它具有缺省的访问控制符特性。此时,这个类只能被同一个包中的类访问或引用。这一访问特性又称为包访问性。

方法修饰符

  • 访问控制修饰符:公共访问控制符public、保护访问控制符protected、缺省默认default、私有访问控制符private

  • 非访问控制修饰符:抽象方法控制符abstract 、静态方法控制符static 、最终方法控制符final 、本地方法控制符native 、同步方法控制符synchronized

    • 抽象方法控制符 abstract :用修饰符 abstract 修饰的方法称为抽象方法。抽象方法仅有方法头,没有方法体和操作实现。
    • 静态方法控制符 static :用修饰符 static 修饰的方法称为静态方法。静态方法是属于整个类的类方法;而不使用static 修饰、限定的方法是属于某个具体类对象的方法。 由于 static方法是属于整个类的,所以它不能操纵和处理属于某个对象的成员变量,而只能处理 属于整个类的成员变量,即 static 方法只能处理 static的域。
    • 最终方法控制符 final :用修饰符 final修饰的方法称为最终方法。最终方法是功能和内部语句不能更改的方法,即最终方法不能重写覆盖。final固定了方法所具有的功能和操作,防止当前类的子类对父类关键方法的错误定义,保证了程序的安全性和正确性。
    • private 修饰符限定为私有的方法,以及所有包含在 final 类 ( 最终类) 中的方法,都被认为是最终方法。
    • 本地方法控制符 native :用修饰符 native 修饰的方法称为本地方法。为了提高程序的运行速度,需要用其它的高级语言书写程序的方法体,那么该方法可定义为本地方法用修饰符 native 来修饰。
    • 同步方法控制符 synchronized :该修饰符主要用于多线程程序中的协调和同步。

变量修饰符

  • 访问控制符:公共访问控制符public 、保护访问控制符protected 、缺省默认访问控制符default、私有访问控制符private
  • 非访问控制符:静态域修饰符static 、最终域修饰符 final 、易失 ( 共享 ) 域修饰符volatile 、暂时性域修饰符transient
    • 公共访问控制符 public :用 public 修饰的域称为公共域。由于 public 修饰符会降低运行的安全性和数据的封装性,所以一般应减少 public 域的使用。
    • 私有访问控制符 private : 用 private 修饰的成员变量 ( 域 ) 只能被该类自身所访问,而不能被任何其它类 ( 包括子类 ) 所引用。
    • 保护访问控制符 protected :用 protected 修饰的成员变量可以被三种类所引用:①该类自身;②同一个包中的其它类;③其它包中的子类。使用修饰符 protected 的主要作用是允许其它包中的子类来访问父类的特定属性。
    • 缺省默认修饰符 :没有访问控制修饰符或用修饰符 default修饰的成员变量可以被该类本身或同一包中的其他类访问。
    • 静态域修饰符 static :用 static修饰的成员变量仅属于类的变量,而不属于任何一个具体的对象,静态成员变量的值是保存在类的内存区域的公共存储单元,而不是保存在某一个对象的内存区间。该类的任一对象访问它时取到的都是相同的数据;该类的任一对象修改它时 , 也都是对同一个内存单元进行操作。
    • 最终域修饰符 final :最终域修饰符 final 是用来定义常量的。一个类的域 ( 成员变量 ) 如果被修饰符 final 说明,则它的取值在程序的整个执行过程中都是不变的。
    • 易失 ( 共享 ) 域修饰符 volatile :易失 ( 共享 ) 域修饰符 volatile是用来说明这个成员变量可能被几个线程所控制和修改。也就是说在程序运行过程中,这个成员变量有可能被其它的程序影响或改变它的取值。通常 volatile 用来修饰接受外部输入的域。
    • 暂时性域修饰符 transient :暂时性域修饰符 transient 用来定义一个暂时性变量。其特点是:用修饰符transient 限定的暂时性变量,将指定 Java虚拟机认定该暂时性变量不属于永久状态,以实现不同对象的存档功能。否则,类中所有变量都是对象的永久状态的一部分,存储对象时必须同时保存这些变量。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值