1,二进制,计算机内部都是二进制表示与计算。16进制是二进制的一种表现形式
package com.tarena.day02; public class BinDemo { /** * 数据进制 */ public static void main(String[] args) { // TODO Auto-generated method stub int age = 0xf; System.out.println(age);//15 int i = 0x41; System.out.println(i);//65 i = 0xc0; System.out.println(i);//192 i=010; //i=081 //错误,八进制不能有8 System.out.println(i); i = 0x4e2d;// 0100 1110 0010 1101 System.out.println(i); } }
2,布尔类型 变量的起名一定要有意义
package com.tarena.day02; public class BooleanDemo { /** * 布尔类型 */ public static void main(String[] args) { int age =12; boolean isChild = age < 16; if(isChild) { System.out.println("小朋友你好!"); } boolean started = true; boolean isMan = true; boolean m = true;//不建议使用无意义的变量 } }
3,字符类型 占2个字节 字符类型是无符号的整形,是Unicode字符的编码,显示字符时在Unicode中找字模
编码的低255字符与ASCII编码一致。字符没有负数,取值范围0~65535package com.tarena.day02; import java.util.Random; public class CharDemo { /** * 字符的演示 */ public static void main(String[] args) { char c = 65; System.out.println(c);//A // 65是'A'的Unicode编码,在Unicode的低255 与 ASCII 编码一致 c = 20013 ; System.out.println(c);//中 System.out.println(20013 == '中');//中 c = 'A' + 2; System.out.println(c);//C c = 0x4e2d; System.out.println(c);// 中 int i = '祖'; System.out.println(i);//Unicode编码 System.out.println('祖');//祖 System.out.println((int)'祖');//编码 int n = '8' - '0';// '0'~'9' -> 0~9 System.out.println(n);//8 Random random = new Random(); int x = random.nextInt(26); System.out.println("x = "+ x); char r = (char)('A'+x);// 'A' ~ 'Z' System.out.println(r); char hex = 'a'; int num = hex - 'a' + 10;// 'a' ~'f' -> 10 -15 System.out.println(num); System.out.println(0 == '0');//false char ch = '3'; int nx = ch - '0'; ch = '/''; ch = '/u4e2d'; System.out.println(0 == '/u0000'); //ture System.out.println(0 == '0');//false /* * /' /" // /t /n /r /b /f /u0041 */ System.out.println("/u0000 adf");// /u0000 表示字符串的结束 } }
4,类型转换 整形的字面常量默认为int 类型,长整形强制转换 int 类型 截取低32位,强制转换byte
截取低8位,转换成float类型 会失去精读,基本不使用float类型。
package com.tarena.day02; public class ConvertDemo { /** * 类型转换 */ public static void main(String[] args) { long l = 0x7fffffffL + 1; System.out.println(l); int i = (int)(l*2); // 00000000 00000000 00000000 00000001 // 00000000 00000000 00000000 00000000 System.out.println(i); int n = 256 +16 + 128; // 00000000 00000000 00000001 00010000 byte b =(byte)n; System.out.println(b); double pi = 3.1415926535897932384626; System.out.println(pi); float f = (float)pi; System.out.println(f); double d = 2l; System.out.println(d); } }
5,浮点类型 float 类型存储有可能失去低4位精度。浮点类型的字面量默认是double类型,不能直接 赋值给float类型。要使用修饰符L。
package com.tarena.day02; public class FloatDemo { /** * 浮点类型演示 */ public static void main(String[] args) { float f = 24242424; f = 0x7fffffff;//01111111 11111111 11111111 11111111 System.out.println(f); float f1 = 0x7ffffff0; System.out.println(f1); System.out.println(f1 == f);//true double d1 = 0x7fffffff,d2 = 0x7ffffff0; System.out.println(d1 == d2);//false //float x = 2.6;//错误,不能用double类型的字面量对float赋值 float x = 2.6f; double y = 2.6D; // 1 1L 1f 1D double z = y-2D; System.out.println(z); System.out.println(z == 0.6D); } }
6,整形 字面常量默认是 int类型。整数的字面量不超过变量的范围可以赋值,变量不能给变量赋值。整形变量做数学运算后得到的值为int类型
package com.tarena.day02; public class IntagerDemo { /** * 整形演示 */ public static void main(String[] args) { // TODO Auto-generated method stub byte b = 123; //b = 128;//错误 , 超过范围 System.out.println(b); byte b2 = 23; //byte b3 = b+b2 //错误,值为int类型 //long l = 243111111111;// 错误 long l = 243111111111L; short s = 128;//整数的字面量不超过变量的范围可以赋值,变量不能给变量赋值 int x = 128; // 00000000 00000000 00000000 10000000 //s = x; //错误,大类型变量不能直接对小类型变量复制赋值 // s = 00000000 10000000 s = (short)x;//强制类型转换 } }
7,方法 方法的参数是值拷贝,主函数的传的参数与方法里面的参数没有关系。
package com.tarena.day02; public class MethodDemo { /** *方法演示 */ public static void main(String[] args) { int x = 2; int y = f(x);//f(x) = 3x + 6; System.out.println(y); System.out.println(fun(x)); double d = Math.pow(2, 3); System.out.println(d); d = Math.sqrt(2); System.out.println(d); double z = Math.sin(Math.PI/2); System.out.println(z); } public static int f(int x) { int y = 3*x + 6; return y; } public static int fun(int x) { int y = x*x*2+x+3; return y; } }
8变量 变量的必须声明类型,第一次赋值为变量初始化,第二次赋值为赋值。变量受作用域的限制,
package com.tarena.day02; /** * 变量的演示 * */ public class VarDemo { public static void main(String[] args) { int age;//变量的声明 //System.out.println(age);//错误,变量没初始化 age = 15;//变量初始化,第一次赋值叫初始化 System.out.println(age); //int age = 16;//错误,变量重复定义 int times = 20;//声明直接初始化 if(age < 16)//如果是小孩就给压岁钱 { int pay = 200; System.out.println("年龄:" + age +",压岁钱:"+pay); } //System.out.println("压岁钱:"+pay);//错误 int pay; } }
作业1:加法练习器
package day02; import java.util.Random; import java.util.Scanner; /** * 加法练习器 选做题目 */ public class AddDemo { public static void main(String[] args) { int a,b; Random random = new Random(); a = random.nextInt(100); b = random.nextInt(100); System.out.println(a +" + "+b+"= "); Scanner sc = new Scanner(System.in); int sum = sc.nextInt(); if(a+b == sum) { System.out.println("回答正确!"); } else { System.out.println("回答错误!"); } } }
作业2:等额本息还款
package day02; /** * 等额本息还款计算 */ public class Credit { public static void main(String[] args) { double pay = payPerMonth(200000, 0.0558, 180); System.out.println(pay); } /** * 计算等额本息还款 * @param payment 总贷款数额 200000 * @param ret 年利率 如 5.58 * @param num 分期月份数量 180 * @return 每月还款金额 1642.66 */ public static double payPerMonth(double payment, double ret, int num){ double pay; double date = ret / 12 ; pay = (payment *date *Math.pow(1 + date, num) ) / (Math.pow(1 + date, num) -1); return pay; } }
作业3:函数计算器
package day02; import java.util.Scanner; /** * 函数计算器 * 数学二次函数 y=f(x)=2x*x+5x+1 */ public class FunctionDemo { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int x = sc.nextInt(); System.out.println(f(x)); } public static int f(int x){ return 2*x*x+5*x+1; } }