`
sukializee
  • 浏览: 10170 次
  • 性别: Icon_minigender_1
  • 来自: 太原
最近访客 更多访客>>
社区版块
存档分类
最新评论

Java SE 学习笔记01 代码

阅读更多

配合学习笔记01的代码

 

   Java中的基本数据类型

 

/**
 * Java基本数据类型
 */
package org.sean.module01;

/**
 * @author 不落的太阳(Sean Yang)
 */
public class BasicType {

	/**
	 * 基本类型的自动提升
	 * 
	 * 自动提升的规则如下:
	 * 
	 * 如果两个操作数中有一个是double类型,则系统先将另一个操作数转换为double类型,然后运算,否则
	 * 如果两个操作数中有一个是float类型,则系统先将另一个操作数转换为float类型,然后运算,否则
	 * 如果两个操作数中有一个是long类型,则系统先将另一个操作数转换为long类型,然后运算,否则
	 * 所有的操作数都被转换为int类型进行运算(低于int类型的会自动提升)
	 * 
	 * 如果采用"+=","*="等缩略形式的运算符,则系统会强制将运算结果转换为目标变量类型。
	 * 
	 */
	public static void typeAutoUppgrade() {
		char c = 'a';
		byte b = 44;
		short s = 1023;
		int i = 40000;
		long l = 1234L;
		float f = 35.6F;
		double d = 3.13D;

		double result = (b * f) + (f * l) + (i / c) - (d * s);
		System.out.println("自动类型提升的测试结果为" + result);
		@SuppressWarnings("unused")
		boolean flag = false;
	}

	/**
	 * 基本类型的自动转换
	 * 
	 * 自动类型转换的规则:
	 * 
	 * 两种类型是兼容类型;目标类型的范围要比源类型的范围大
	 */
	public static void autoChange() {
		char c = 'c';
		byte b = 44;
		short s = b;
		int i1 = s;
		int i2 = c;
		long l = i1;
		float f = l;
		double d = f;
		System.out.print("c=" + c + "\t");
		System.out.print("b=" + b + "\t");
		System.out.print("s=" + s + "\t");
		System.out.print("i1=" + i1 + "\t");
		System.out.print("i2=" + i2 + "\t");
		System.out.print("l=" + l + "\t");
		System.out.print("f=" + f + "\t");
		System.out.print("d=" + d + "\t");
		System.out.println();

		/**
		 * 当float转换为double时,会出现不相等的情况
		 * 
		 * 原因:float是32位的,double是64位的,在进行类型转换的时候,操作数都是以二进制的形式进行的,
		 * 而浮点型无法用二进制精确表示,所以在类型转换时出现不相等的情况
		 */
		float f2 = 1.7F;
		double d2 = f2;
		System.out.println("f2=" + f2 + "\t" + "d2=" + d2);
		float f3 = (float) d2;
		System.out.println("f3=" + f3);
	}

	/**
	 * 基本类型的强制类型转换
	 * 
	 * 强制类型转换的规则:
	 * 
	 * 当两种类型不兼容或者,目标类型比源类型的范围小,就要进行强制类型转换
	 * 
	 * 转化时会发生"截断取模"的现象
	 */
	public static void forceChange() {
		double d = 123.45D;
		float f = (float) d;
		long l = (long) d;
		int i = (int) d;
		short s = (short) d;
		byte b = (byte) d;

		System.out.print("d=" + d + "\t");
		System.out.print("f=" + f + "\t");
		System.out.print("l=" + l + "\t");
		System.out.print("i=" + i + "\t");
		System.out.print("s=" + s + "\t");
		System.out.print("b=" + b + "\t");

		/**
		 * 首先对d2进行截断操作,值变为567,然后对128进行取模,得到结果
		 */
		double d2 = 567.8D;
		b = (byte) d2;
		System.out.println(b);
	}

	public static void main(String[] args) {
		BasicType.typeAutoUppgrade();
		BasicType.autoChange();
		BasicType.forceChange();
	}
}

 

   Java中的运算符

/**
 * Java中的运算符
 */
package org.sean.module01;

/**
 * @author 不落的太阳(Sean Yang)
 */
public class Operator {

	/**
	 * 算数运算符: +, -, *, /, %
	 * 
	 * @param a
	 *            左操作数
	 * @param b
	 *            右操作数
	 */
	public static void ArithmeticOperator(int a, int b) {
		int result = a + b;
		System.out.println("a+b=" + result);

		/**
		 * 当 * 号两边的数据类型为char,byte,short时,其均会转换为int进行运算 除此以外运算结果取决于两个操作数中范围较宽的类型
		 * 
		 * 当乘法运算产生的结果发生数据溢出时,不会抛出ArithmeticException,只会出现精度丢失的情况
		 */
		int mutiplyResult = a * b;
		System.out.println("a*b=" + mutiplyResult);

		/**
		 * 对于除法运算,当 / 号两边数据类型为整型时,结果为整型(不管其能否被除尽)
		 * 
		 * 当 / 号两边数据有一个是浮点型,结果为浮点型
		 * 
		 * 如果左操作数为整型,当 / 号的右操作数为0时,会抛出ArithmeticException
		 * 
		 * 如果左操作数为浮点型,当 / 号的右操作数为0时,不会抛出异常
		 * 
		 * 常见结果有三种:Infinity; -Infinity; NaN
		 * 
		 * Infinity ---> 2.0/0 -Infinity ---> -2.0/0 NaN ---> 0.0/0; 0.0/0.0; 0/0.0
		 */
		int divideResult = a / b;
		System.out.println("a/b=" + divideResult);

		/**
		 * 判断是否为NaN
		 */
		System.out.println("0.0/0.0 is NaN:" + Double.isNaN(0.0/0.0));
		
		/**
		 * 对于取模运算:实质是用左操作数连续减去右操作数,直到相减的结果小于右操作数,此时结果即为余数
		 * 
		 * 当取模运算中有负数作为操作数的时候,取模运算结果的符号取决于左操作数的符号
		 * 
		 * 如果左操作数为整型,当 % 符号的右操作数为0时,会抛出ArithmeticException
		 * 
		 * 如果左操作数为浮点型,当 % 符号右操作数为0时,不会抛出异常,
		 * 
		 * NaN :2.0%0; -2.0%0; 0.0%0; 0%0; 0%0.0
		 */		
		int modResult = a % b;
		System.out.println("a%b=" + modResult);

	}

	/**
	 * 比较运算符: ==, !=, <, <=, >, >=,
	 * 
	 * @param a
	 *            左操作数
	 * @param b
	 *            右操作数
	 */
	public static void compareOperator(int a, int b) {
		System.out.println("a==b " + (a == b));
		System.out.println("a!=b " + (a != b));
		System.out.println("a>b " + (a > b));
		System.out.println("a>=b " + (a >= b));
		System.out.println("a<b " + (a < b));
		System.out.println("a<=b " + (a <= b));
	}

	/**
	 * 位运算: &, |, ^, ~, >>, >>>, <<
	 * 
	 * @param a
	 *            左操作数
	 * @param b
	 *            右操作数
	 */
	public static void bitOperator(int a, int b) {

		/**
		 * 按位与,两个操作数都为1时,结果为1,否则为0
		 */
		int c = a & b;
		System.out.println("按位与后:" + c);

		/**
		 * 按位或,两个操作数都为0时,结果为0,否则为1
		 */
		c = a | b;
		System.out.println("按位或后:" + c);

		/**
		 * 按位异或,两个操作数相同时结果为0,不同时结果为1
		 */
		c = a ^ b;
		System.out.println("按位异或后:" + c);

		/**
		 * 按位非,如果操作数为0,则变成1,如果为1,则变成0
		 */
		c = ~a;
		System.out.println("按位非后:" + c);

		/**
		 * 左移 (<<) 低位补零,高位舍弃,其实质相当于乘以2的n次方
		 */
		c = a << b;
		System.out.println("左移后:" + c);

		/**
		 * 右移 (>>) 如果值为正:高位补零,低位舍弃,如果值为负,高位补1,低位舍弃,其实质相当于除以2的n次方
		 */
		c = a >> b;
		System.out.println("右移后:" + c);

		/**
		 * 无符号右移 (>>>) 不论正负与否,高位补零,低位舍弃
		 */
		c = a >>> b;
		System.out.println("无符号右移后:" + c);
	}

	/**
	 * 逻辑运算符: &, |, ^, !, &&, ||,
	 * 
	 * @param b1,b2,b3
	 *            参与逻辑运算的boolean表达式
	 */
	public static void booleanOperator(boolean b1, boolean b2, boolean b3) {
		/**
		 * 短路与运算:如果第一个表达式结果为false,那么整个表达式的结果就是false,后面的表达式不再运算
		 */
		if (b1 && b2 && b3) {
			System.out.println("变量b1, b2, b3都为true");
		} else {
			System.out.println("变量b1, b2, b3至少有一个是false");
		}

		/**
		 * 短路或运算:如果第一个表达式结果为true,那么整个表达式的结果就是true,后面的表达式不再运算
		 */
		if (b1 || b2 || b3) {
			System.out.println("变量b1, b2, b3至少有一个true");
		} else {
			System.out.println("变量b1, b2, b3都是false");
		}

		/**
		 * 异或运算:操作数相同为false,不同为true
		 */
		if (b1 ^ b2) {
			System.out.println("b1, b2的值不同");
		} else {
			System.out.println("b1, b2的值相同");
		}
	}

	/**
	 * 其他运算符
	 * 
	 * @param i
	 *            参与运算的变量
	 */
	public static void otherOperator(int i) {
		System.out.println(i++);
		System.out.println(++i);

		int x = (i > 0) ? i : -i;
		System.out.println(x);
	}

	public static void main(String[] args) {
		int a = 7;
		int b = 5;
		Operator.ArithmeticOperator(a, b);
		Operator.compareOperator(a, b);
		Operator.bitOperator(a, b);
		boolean b1 = true;
		boolean b2 = false;
		boolean b3 = true;
		Operator.booleanOperator(b1, b2, b3);
		Operator.otherOperator(7);

	}
}

 

 

    Java中的流程控制

/**
 * Java中的流程控制
 */
package org.sean.module01;

/**
 * @author 不落的太阳(Sean Yang)
 */
public class FlowControl {

	// 目标值
	public static final int TARGET_NUMBER = 10;

	public FlowControl() {
		System.out.println("constructor called");
	}

	/**
	 * 通过if语句和递归方法使n的值逐渐变为TARGET_NUMBER;
	 * 
	 * @param n
	 */
	public void ifStatement(int n) {
		System.out.print(n + " ");
		if (n == TARGET_NUMBER) {
			System.out.println();
		} else if (n > TARGET_NUMBER) {
			ifStatement(--n);
		} else if (n < TARGET_NUMBER) {
			ifStatement(++n);
		}
	}

	/**
	 * 通过for循环将n的值逐渐变为TARGET_NUMBER
	 * 
	 * @param n
	 */
	public void forStatement(int n) {
		for (; n > TARGET_NUMBER; n--) {
			System.out.print(n + " ");
		}
		for (; n < TARGET_NUMBER; n++) {
			System.out.print(n + " ");
		}
		System.out.println(n);
	}

	/**
	 * 通过while循环将n的值逐渐变为TARGET_NUMBER
	 * 
	 * @param n
	 */
	public void whileStatement(int n) {
		while (n < TARGET_NUMBER) {
			System.out.print(n++ + " ");
		}
		while (n > TARGET_NUMBER) {
			System.out.println(n-- + " ");
		}
		System.out.println(n);
	}

	/**
	 * 通过do...while循环将n的值逐渐变为TARGET_NUMBER
	 * 
	 * @param n
	 */
	public void doWhileStatement(int n) {
		if (n > TARGET_NUMBER) {
			do {
				System.out.print(n-- + " ");
			} while (n > TARGET_NUMBER);
		} else if (n < TARGET_NUMBER) {
			do {
				System.out.print(n++ + " ");
			} while (n < TARGET_NUMBER);
		}
		System.out.println(n);
	}

	/**
	 * switch结构
	 * 
	 * @param n
	 */
	public void switchStatement(int n) {

		switch (n) {
		case 10:
			System.out.println("n=10");
			break;
		case 9:
			System.out.println("n=9");
			break;
		case 8:
			System.out.println("n=8");
			break;
		default:
			System.out.println("n!=8 and n!=9 and n!=10");
			break;
		}
	}

	public static void main(String[] args) {
		FlowControl control = new FlowControl();
		control.ifStatement(6);
		control.forStatement(16);
		control.whileStatement(6);
		control.doWhileStatement(16);
		control.switchStatement(8);
	}

}

 

   最后带给大家一个比较全面的打印各种形状的代码,貌似有时笔试面试会问到

 

/**
 * 打印各种图形
 */
package org.sean.module01;

import java.util.Scanner;

/**
 * @author 不落的太阳(Sean Yang)
 */
public class PrintTriangle {

	public static void shape1(int k) {
		for (int i = 0; i < k; i++) {
			for (int j = 0; j <= i; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
	}

	public static void shape2(int k) {
		for (int i = 0; i < k; i++) {
			for (int j = k; j > i; j--) {
				System.out.print("*");
			}
			System.out.println();
		}
	}

	/**
	 * 打印等腰三角形
	 * 
	 * @param i
	 *            三角形的行数
	 */
	public static void shape3(int n) {

		for (int i = 1; i <= n; i++) {
			for (int j = n - i; j >= 0; j--) {
				System.out.print(" ");
			}
			for (int k = 1; k <= (2 * i - 1); k++) {
				System.out.print("*");
			}
			System.out.println("");
		}
	}

	/**
	 * 打印实心菱形
	 * 
	 * @param i
	 *            菱形的行数
	 */
	public static void shape4(int n) {

		for (int i = 0; i < n; i++) {
			for (int k = n - i; k > 0; k--) {
				System.out.print(" ");
			}
			for (int j = 1; j <= (2 * i + 1); j++) {
				System.out.print("*");
			}
			System.out.println();
		}
		for (int i = n - 1; i > 0; i--) {
			for (int k = 0; k <= n - i; k++) {
				System.out.print(" ");
			}
			for (int k = (2 * i); k > 1; k--) {
				System.out.print("*");
			}
			System.out.println();
		}

	}

	/**
	 * 打印空心菱形
	 * 
	 * @param n
	 *            菱形行数
	 */
	public static void shape5(int n) {

		for (int i = 0; i < n; i++) {
			for (int k = n - i; k > 0; k--) {
				System.out.print(" ");
			}
			System.out.print("*");
			for (int j = 1; j <= (2 * i - 1); j++) {
				System.out.print(" ");
			}
			if (i > 0) {
				System.out.print("*");
			}
			System.out.println();
		}
		for (int i = n - 1; i > 0; i--) {
			for (int k = 0; k <= n - i; k++) {
				System.out.print(" ");
			}
			System.out.print("*");
			for (int k = ((2 * i) - 1); k > 2; k--) {
				System.out.print(" ");
			}
			if (i > 1) {
				System.out.print("*");
			}
			System.out.println();
		}

	}

	public strictfp static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);

		int i = scanner.nextInt();
		PrintTriangle.shape1(i);
		System.out.println();
		PrintTriangle.shape2(i);
		System.out.println();
		PrintTriangle.shape3(i);
		System.out.println();
		PrintTriangle.shape4(i);
		System.out.println();
		PrintTriangle.shape5(i);
	}
}
分享到:
评论

相关推荐

    Java学习资料 java se JAVA基础学习笔记和演示案例代码项目

    Java学习资料 java se JAVA基础学习笔记和演示案例代码项目

    Java JDK 7学习笔记源代码

    《java jdk 7学习笔记》针对java se 7新功能全面改版,无论是章节架构或范例程序代码,都做了重新编写与全面翻新。并详细介绍了jvm、jre、java se api、jdk与ide之间的对照关系。必要时从java se api的源代码分析,...

    Java JDK7学习笔记-光盘

    《Java JDK7学习笔记》针对java se 7新功能全面改版,无论是章节架构或范例程序代码,都做了重新编写与全面翻新。并详细介绍了jvm、jre、java se api、jdk与ide之间的对照关系。必要时从java se api的源代码分析,...

    Java+JDK+7学习笔记_林信良编著.pdf

    《Java JDK7学习笔记》针对java se 7新功能全面改版,无论是章节架构或范例程序代码,都做了重新编写与全面翻新。并详细介绍了jvm、jre、java se api、jdk与ide之间的对照关系。必要时从java se api的源代码分析,...

    Java学习笔记7.0

    《Java JDK6学习笔记》是作者良葛格本人近几年来学习Java的心得笔记,结构按照作者的学习脉络依次展开,从什么是Java、如何配置Java开发环境、基本的Java语法到程序流程控制、管理类文件、异常处理、枚举类型、泛型...

    Java学习笔记

    ●本书是作者多年来教学实践经验的总结,汇集了学员在学习课程或认证考试中遇到的概念、操作、应用等问题及解决方案, ●针对Java SE 8新功能全面改版,无论是章节架构或范例程序代码,都做了重新编写与全面翻新, ●...

    JAVA SE 归档笔记

    公司几位高手一起总结的一份JAVA SE的笔记.总结的很精练,新手可当学习向导查阅,达人可当工具手册使用.真是练习JAVA,杀人必备的好文档!

    java jdk8 学习笔记

    Java编译语言将Java代码编译成.class文件(只有一种形式),而C/C++语言将代码编译成01码,不同的操作系统的01码指令不同,这造成了不能跨平台,而Java将这个任务交给JVM,不同操作系统上的JVM将.class文件编译成不同...

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

     《Java JDK 7学习笔记》针对Java SE 7新功能全面改版,无论是章节架构或范例程序代码,都做了全面重新编写与翻新。  《Java JDK 7学习笔记》是作者多年来教学实践的经验总结,汇集了学员在教学过程中遇到的概念、...

    《JavaJDK7学习笔记》PDF

    资源名称:《Java JDK 7学习笔记》PDF内容简介:本书是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习Java时遇到的概念、操作、应用或认证考试等问题及解决方案。本书针对Java SE 7新功能全面改版,无论...

    毕向东Java SE视频教程整理笔记

    传智播客毕向东Java SE视频教程的课堂笔记。包括代码和总结。

    Java SE查阅手册.pdf

    笔记记录总结的知识属于Java SE(8)的知识,Java SE重要的知识模块如下: Java的基本元素、面向对象、基本的设计模式、Java常用的类库、文件与IO、类集合框架、多线程的基础。 笔记主要提炼的是《Java核心技术精讲...

    Java JDK 8学习笔记 带完整书签(不是页码书签哦)

    清华大学出版社,林信良著,2015.3,643页,完整清晰带目录。 本书针对Java SE 8新功能全面改版,无论是章节架构或范例程序代码,都做了重新编写与全面翻新。

    java学习笔记

    ●本书是作者多年来教学实践经验的总结,汇集了学员在学习课程或认证考试中遇到的概念、操作、应用等问题及解决方案, ●针对Java SE 8新功能全面改版,无论是章节架构或范例程序代码,都做了重新编写与全面翻新, ●...

    java_se_learning:java se learning project JAVA基础学习笔记和演示案例代码项目

    java se学习知识点整理 练习Demo JAVA学习资料 几种常见排序算法.docx JAVA 修饰符 JAVA泛型 韩顺平java笔记完整版-基础篇 ##数据类型 JAVA中的基本数据类型有四类八种:整数类型、小数类型、字符类型、布尔类型。 ...

    Java基础之笔记系列—Day06(面向对象)

    Java基础之笔记系列—Day06(面向对象,开发代码)

    Java JDK 8学习笔记

    清华大学出版社,林信良著,2015.3,643页,完整清晰带目录。 本书针对Java SE 8新功能全面改版,无论是章节架构或范例程序代码,都做了重新编写与全面翻新。

Global site tag (gtag.js) - Google Analytics