2语言基础

1数据类型

基本数据类型存储在栈区,引用数据类型存储在堆区

栈:用于存储局部变量,当数据用完所占空间会自动释放;

堆:通过new建立的实例都存放在堆内存中,每个实体都有内存地址值;实体中的变量都有默认初始化值,实体不在调用会在不确定的时间内被垃圾回收器回收。

自动类型提升:(注意是单箭头)

 

 

  

强制类型转换:

public class child
{
	
	public static void main(String args[]) {
		byte b1 = 3,b2 =4,b;
		b = b1 + b2;//报错,int转byte会有损失。
		b = (byte)(b1 + b2);//7
		System.out.println(b);
		//b = 3+4;//报错,int转byte会有损失。需要强制转换
		b = (byte)3+4;
		System.out.println(b);//7
   }
}

public class child
{
	public static void main(String args[]) {
		byte x = (byte)128;
		System.out.println(x);//-128
		byte y = (byte)-129;
		System.out.println(y);//127
		int z = (byte)'a';//97
		System.out.println(z);
   }
}

3和4都是常量,所以java在编译时期会检查该常的和是否超出byte类型的范围。如果没有可以赋值; b1和b2是变量,因为变量的值会量变化,不确定具体的值,所以默认使用int类型进行存储。错误为:不兼容的类型,从int转换为byte可能会有损失。

“&”和“&&”的区别:

&:左边无论真假,右边都进行运算;

&&:如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。短路现象。

“|”和“||”的区别同理,双或时,左边为真,右边不参与运算。三目运算符也存在短路? :

方法的定义:

[修饰符] 返回值类型 方法名(参数类型 形式参数1,参数类型 形式参数2,...)   

 {             

        执行语句;           

         return 返回值;   

 }

Java中的参数传递只存在一种规则:

按值传递。 但是在实际效果中可以分为两类:

按值传递效果:8种基本数据类型(String对象)

按址传递(按引用传递)传递效果:除String之外的所有复合数据类型,包括数组、类、接口等。


public class child
{
	public static void main(String args[]) {
		Object x = new Object();
		String s = "nihao";
		int[][] arr1 = new int[3][2];
		int[] arr2 = new int[3];
		System.out.println(x);
		System.out.println(s);
		System.out.println(arr1);
		System.out.println(arr2);
		//java.lang.Object@15db9742
		//nihao
		//[[I@6d06d69c
		//[I@7852e922 一维数组,int型,哈希值
   }
}


public class child
{
	public static void main(String args[]) {
		String[] names = {"ABC", "XYZ", "zoo"}; 
		String s = names[1]; //按值传递,names[1]的值变了不影响s
		names[1] = "cat"; 
		System.out.println(s); //XYZ
		System.out.println(names[1]); //cat
   }
}

double d = 1.1/0.0;//不报错 Infinity代表一个无穷大的数字


public class child
{
	public static void main(String args[]) {
		byte x = (byte)127;
		System.out.println(x);//127
		int z = (byte)'a';//97
		System.out.println(z);
		double i = 1.0/0.0;
		System.out.printf("%.28f", i); //Infinity
		char c = (char)1.1f;
		System.out.println(c); //一个字符
   }
}

 


public class child
{
	public static void main(String args[]) {
		
		int a = 2;
		System.out.println((a++)<<a);//16
		//括号里的先执行,但是是后++,所有括号的值为2,然后后面的a的值是3
		System.out.println(a);//3
		a--;
		a = (a++)+a;//5    括号值为2后面a值为3,最后a值为5
		//a = (a++)+a++;//和上一语句结果一样,后面的++没有作用
		System.out.println(a);//
		
   }
}


public class child
{
	public static void main(String args[]) {
		int a = 5 ,b; 
		String value; 
		switch (a) {
			default:
			{
				b=4; 
				System.out.println("default");
				//没有break,继续执行后面的
			}
			case 1:
			{
				b=1; 
				System.out.println("case 1");
			}
			case 2:
			{
				b=2; 
				System.out.println("case 2");
			}
			case 3:
			{
				b=3;
				System.out.println("case 3");
				break;
			} 
		}
		System.out.println(b);//3
   }
}

 运行结果:

default
case 1
case 2
case 3
3

public class child
{
	public static void main(String args[]) {
		int a = 5 ,b; 
		String value; 
		switch (a) {
			
			case 1:
			{
				b=1; 
				System.out.println("case 1");
			}
			case 2:
			{
				b=2; 
				System.out.println("case 2");
			}
			case 3:
			{
				b=3;
				System.out.println("case 3");
				break;
			} 
			default:
			{
				b=4; 
				System.out.println("default");
				//没有break,继续执行后面的
			}
		}
		System.out.println(b);//4
   }
}

运行结果:

default
4

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值