以下为完整源码,需要1.8版本JDK,否则部分新特性可能出现兼容问题,去掉注释号即可运行
package hello;
import java.util.Scanner;
public class Hello 
{
	public static void main(String[] args) 
	{
		// TODO 自动生成的方法存根
		/*
		//这是第一个程序
		System.out.println("这是一个减法计算器");
		Scanner in = new Scanner(System.in);
		int a;
		int b;
		System.out.print("请输入第一个数:");
		a = in.nextInt();
		System.out.print("请输入第一个数:");
		b = in.nextInt();
		System.out.println("结果:"+a+"-"+b+"="+(a-b));
		*/
		
		/*
		//这是第二个程序
		System.out.println(1.2-1.1);
		int foot;
		foot=32/(int)3.0;//强制类型转换
		double inch;
		Scanner in = new Scanner(System.in);
		foot = in.nextInt();
		inch = in.nextDouble();
		double meter=(foot+inch/12)*0.3048*100;
		System.out.println((int)meter+"CM");//强制类型转换
		*/
		
		/*
		double a = 1.0;
		double b = 0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1;
		System.out.println(a==b);
		System.out.println("a="+a+";b="+b);
		System.out.println(Math.abs(a-b)<1e-6);//判断浮点数是否相等不能直接判断,应该求其差的绝对值然后和一个比较小的数比较,因为浮点数计算有误差;
		
		//初始化
		Scanner in = new Scanner(System.in);
		int blance = 0;
		while(true)
		{
			System.out.print("请投币:");
			int amount = in.nextInt();
			blance = blance + amount;
			System.out.println("当前已投币:"+blance+"元");
			System.out.println(amount>=10);
			if (blance >= 10)
			{
				System.out.println("*************");
				System.out.println("*Java城际铁路专线*");
				System.out.println("*   无指定座位票     *");
				System.out.println("*    票价10元        *");
				System.out.println("**************");
				System.out.println("找零:"+(blance-10));
				blance = 0;
			}
		}
		*/
		
		/*
		//while循环
		System.out.print("请输入一个整数:");
		Scanner in = new Scanner(System.in);
		int type = in.nextInt();
		switch (type) 
		{
		case 1:
			System.out.println("输入了1");
			break;
		case 2:
			System.out.println("输入了2");
			break;
		default:
			System.out.println("输入的不是1和2");
			break;	
		}
		*/
		
		/*
		//do while 循环
		Scanner in = new Scanner(System.in);
		System.out.print("请输入一个数:");
		int number = in.nextInt();
		int count = 0;
		do
		{
			number = number / 10;
			count = count + 1;
		}while(number>0);//最后的分号不能少
		System.out.println("这是一个"+count+"位数");
		*/
		
		/*
		//循环计数
		int count = 10;
		do {
		    System.out.println(count);
		    count = count -1;
		} while (count>0);
		System.out.println("发射!");
		*/
		/*
		//求平均数
		Scanner in = new Scanner(System.in);
		int number = 0;
		int sum = 0;
		int count = 0;
		do
		{
			System.out.print("请输入整数(-1代表已输入全部的数):");
			number = in.nextInt();
			if(number != -1)
			{
			count = count + 1;
			sum = sum + number;
			}
		}while(number != -1);
		if(count!=0)			
			System.out.println("数字的个数为:"+count+";平均数是:"+(double)sum/count);
		else
			System.out.println("没有输入任何有效数字");
			*/
		
		/*
		//猜数程序
		Scanner in = new Scanner(System.in);
		int number = (int)(Math.random()*100+1);//[0,1)-->[0,100)-->[1,100]
		int a;
		int count=0;
		System.out.println("提示:"+number);
		System.out.print("亲输入你猜的数:");
		a =	in.nextInt();
		count=count+1;
		while(a!=number)
		{
			if(a>number)
				System.out.println("偏大");
			else if(a<number)
				System.out.println("偏小");
			System.out.print("亲输入你猜的数:");
			a =	in.nextInt();
			count=count+1;
			
		}
		System.out.println("恭喜你猜对了,你猜了:"+count+"次");
		*/
		
		/*
		//逆序输出
		System.out.print("请输入一个正整数:");
		Scanner in = new Scanner(System.in);
		int number = in.nextInt();
		int result = 0;
		System.out.print("逆序输出:");
		do
		{
			int digit = number % 10;
			result = result * 10 + digit;
			System.out.print(digit);
			number = number / 10;
		}while(number>0);
		System.out.println();
		System.out.println("逆序数字:"+result);
		*/
		
		/*
		//算阶乘
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		int factor = 1;
		for(int i=1;i<=n;i++)
		{
			factor = factor * i;
		}
		System.out.println(factor);
		*/
	
		
		/*
		//素数算法
		//out://标号,可以让break跳出所标位置以下的循环里面的所有循环
		for(int n=2;n<100;n++)
		{	
			int isPrime = 1;
			for (int i=2; i<n;i++)
			{
				if(n % i == 0)
				{
					isPrime = 0;
//					System.out.println(n+"不是素数");
					break;//终止循环;
					//break out;//标号使用,continue也可使用
				}	
			}
			if(isPrime == 1)
				System.out.print(n+" ");
//			else
//				System.out.println(n+"不是素数");
		}
		*/
		
		
		/*
		//求和1-1/2+1/3-1/4+1/5.........1/n
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		double sum = 0.0;
		int sign = 1;
		for(int i=1;i<=n;i++,sign = -sign)//可用逗号添加表达式
		{
			sum += sign*1.0/i;
		}
		System.out.println(sum);
		System.out.printf("%.2f",sum);//个数控制  
		*/
		
		
		/*
		//求两个数的最大公约数
		Scanner in = new Scanner(System.in);
		int a = in.nextInt();
		int b = in.nextInt();
		int gcd = 1;
		for(int i = 2;i<=a && i<=b; i++)
		{
			if(a%i == 0&&b%i == 0)
				gcd = i;
		}
		System.out.println("最大公约数是:"+gcd);
		*/
		
		
		/*
		//数组:找出一组数里面比平均数大的数并输出,同时输出平均数
		Scanner in = new Scanner(System.in);
		int sum = 0;
		int count = 0;
		count = in.nextInt();
		if(count>0)
		{
			int[] numbers = new int[count];
			for(int i=0;i<count;i++)
			{
				numbers[i] = in.nextInt();
				sum = sum + numbers[i];	
			}
			if(count!=0)
			{
				double average = sum/count;
				for (int i = 0; i < count; i++)
				{
					if (numbers[i] > average)
						System.out.print(numbers[i]+" ");
				}
				System.out.println();
				System.out.println("数字的个数为:"+count+";平均数是:"+(double)sum/count);
			}	
			else
				System.out.println("没有输入任何有效数字");
		}
		//for(int i=0;i<number.length;i++)这样也可以,且比较好
		*/
		
		
		/*
		//代码可扩展性,数组改变长度无需修改循环
		Scanner in = new Scanner(System.in);
		int[] scores = {87,98,69,54,65,76,87,99,100,103};
		System.out.println(scores.length);
		for (int i=0;i<scores.length;i++)
		{
			System.out.println(scores[i]+" ");
		}
		*/
		
		
		 /*
		 //数组名只是数组的管理者,并不是数组的所有者。
		 int a[]={1,2};
		 int b[]=a;
		 b[0]=5;
		 System.out.println(a[0]);//a[0]也会变成5,实际上a和b管理着的是同一个数组空间
		 */
		
		/*
		 //数组拷贝
		 Scanner in = new Scanner(System.in);
		 int a[]={1,2,3,4,5};
		 int b[]=new int[a.length];
		 for(int i=0;i<b.length;i++)
		 {
			 b[i]=a[i];
			 System.out.print(b[i]+" ");
		 }
		 */
		
		
		/*
		//遍历数组
		Scanner in = new Scanner(System.in);
		int[] data = {1,2,34,5,6,7,8,54,5,3,54,35};
		int x = in.nextInt();
		int loc = -1;
		for(int i=0;i<data.length;i++)
		{
			if (x==data[i])
			{
				loc = i;
				System.out.println(x+"是第"+(loc+1)+"个");
			}
		}
		if (loc==-1)
			System.out.println(x+"不在数组中");
		//仅查找是否有某数
		for(int k : data)//这种循环是for-each循环,k为data中元素从0下标开始到最大下标遍历,且for-each循环不能更改数组值K为只读
		{
			if (k==x)
			{
				System.out.println("有这个数");
				break;
			}
		}
//		for -each格式:for(<类型> <变量>:<数组>)
//		{
//			...
//		}
		*/
		
		
		/*
		//构造前50个素数算法
		Scanner in = new Scanner(System.in);
		int[] primes = new int[50];
		primes[0] = 2;
		int cnt = 1;
		MAIN_LOOP://标号
		for(int x = 3;cnt < 50;x++)
		{
			for(int i=0; i<cnt; i++)
			{
				if (x % primes[i]==0)
				{
					continue MAIN_LOOP;
				}
			}
			primes[cnt++] = x;
		}
		for(int k:primes)
		{
			System.out.print(k+" ");
		}
		*/
		
		/*
		//构造素数表
		Scanner in = new Scanner(System.in);
		boolean[] isPrime = new boolean[100];
		for(int i=0;i<isPrime.length;i++)
		{
			isPrime[i]=true;
		}
		for(int i=2;i<isPrime.length;i++)
		{
			if(isPrime[i])
			{
				for(int k=2;i*k<isPrime.length;k++)
				{
					isPrime[i*k]=false;
				}
			}		
		}
		for (int i=2;i<isPrime.length;i++)
		{
			if(isPrime[i])
			{
				System.out.print(i+" ");
			}
		}
		*/
		
		
		/*
		//井字棋程序
		Scanner in = new Scanner(System.in);
		final int size=3;
		int [][] board=new int[size][size];
		boolean gotResult = false;
		int numOfX = 0;
		int numOfO = 0;
		//读入矩阵
		for(int i=0; i<size;i++)//等价于for(int i=0; i<board.length;i++)
		{
			for(int j=0; i<size;j++)//等价于for(int j=0; i<board[i].length;j++)
			{
				board[i][j]=in.nextInt();
			}
		}
		//检查行
		//检查列
		//检查对角线
		//输出结果
		*/
		
		
		//以下是有关字符及字符串的内容
		//包裹类型,integer是int的包裹类型,包裹类型可以有一些基础类型没有属性工具,例如:
//		System.out.println(Integer.MAX_VALUE);
//		System.out.println(Integer.MIN_VALUE);
//		System.out.println(Integer.BYTES);
//		System.out.println(Integer.SIZE);
		//.运算符,例如a.length 在点的左边是一个对象或一个类,点的右边是这个对象或这个类能够提供的一些服务或数据或能做的一些动作
//		System.out.println(Character.isDigit(‘一‘));//Character.isDigit()可以帮我们判断是不是数字
//		System.out.println(Character.toLowerCase(‘A‘));//把A转化为小写
		 
		
		
		//String变量和数组变量一样,是管理者而不是所有者;
//		String s=new String("gkfh");//创建了一个String的对象,用"gkfh"初始化这个对象,初见管理这个对象的变量s,让s管理这个对象
//		String s="gkfh";//这样也是可以的,和数组一样,编译器帮你创建一个对象交给s来管理
		//字符串可以使用+号来连接,如果一边是字符串,另一边不是字符串,系统会把不是字符串的那一部分表达为字符串
		
		
		/*
		//字符串读入
		Scanner in = new Scanner(System.in);
		String s;
		s=in.nextLine();//读一整行
		System.out.println(s);
//		s=in.next();//读连续的一个单词,1234 56会读进1234
		System.out.println(s);
		System.out.println(s=="bye");//这种比较方法是错误的,即使s="bye",得到的结果也是false,因为s是对象是管理者和数组类似,如果要比较使用下一句的方法
		System.out.println(s.equals("bye"));//比较两个字符串是否相等使用.equals()方法
		*/
		
		
		//字符串操作
		String name="erwqer";
		System.out.println(name.length());//算字符串长度
		System.out.println(name.charAt(0));//输出name这个字符串的第一个字符,和数组一样,从0计数
		for(int i=0;i<name.length();i++)
		{
			System.out.print(name.charAt(i));
		}
		System.out.println();
		//字符串不能用for-each循环
		//取子串
		String s1="0123A56389汉字";
		System.out.println(s1.substring(2));
		System.out.println(s1.substring(2,4));//输出结果为"23",不是到第五个字符而是输出到第五个字符之前的内容,要注意
		int loc=s1.indexOf(‘3‘);
		System.out.println(s1.indexOf(‘2‘));//找字符
		System.out.println(s1.indexOf(‘3‘,loc+1));//找字符,找3这个字符从loc+1这个位置开始找起
		System.out.println(s1.indexOf("A56"));//找子串,得到的是开始位置
		//s1.startsWith(t)判断是否以某个字符或字符串开头
		//s1.endsWith(t)判断是否以某个字符或字符串结尾
		//s1.trim()去掉字符串左右的空格
		//s1.replaceAll(c1, c2);把这个字符串里面的所有c1都换成c2
		//s1.toLowerCase()把字符串变成大写
		//s1.toUpperCase()把字符串变成小写
		//以上涉及到变更字符串内容的操作都不能改变s1本身,而是要把结果赋给其他字符串才行,例如赋给s2;形如s2=s1.toUpperCase(),输出s2得到想要的结果
		//swith-case可用于字符串,但需要jdk 1.6以上版本支持(不含1.6)
//		switch (s) 
//		{
//		case "qwwe":
//			
//			break;
//
//		default:
//			break;
//		}
		
		
		//math类:abs求绝对值,pow求幂次,random可以给出随机数,round可以做一些四舍五入,范例:
//		System.out.println(Math.abs(-12));//求-12绝对值
//		System.out.println(Math.round(10.645));//结果是11,四舍五入了
//		System.out.println(Math.random());//给一个[0,1)范围的数
//		System.out.println(Math.pow(2, 3));//结果是8,即求得2的3次方值,是浮点的,所有可用小数		
	}
};
Java入门基础学习源码,有C或C++语言基础的可以快速掌握
原文:http://www.cnblogs.com/tyhjtz-std/p/5489871.html