Day_1~Day_2
Day_1
初识Java
Java 的工作原理
- 将.Java编译成.Class字节码文件(通过Javac.exe)
- 通过Java.exe在 Jvm内存中 解释执行 字节码文件。
JDK和JRE
- JDK是开发者工具包,包含JRE。
- JRE是Java运行的环境,包括JVM.
Java的跨平台性
- Java语言是跨平台的,每个平台都有自己独特的jvm(java虚拟机)。
- Java只能在JVM中运行,不能直接在操作系统中运行。
保留字



关键字和保留字均不能作为变量名、方法名、类名、包名、参数。
驼峰命名法
小驼峰式命名法(lower camel case)
- 多个单词组合成一个字符串 第一个单词的首字母小写
- 从第二个单词开始,首字母都要大写
- 例如:myName,myFirstJavaProgram
大驼峰式命名法(upper camel case)
- 多个单词组合成一个字符串 第一个单词的首字母大写
- 从第二个单词开始,首字母都要大写
- 例如:MyName,MyFirstJavaProgram
基本数据类型(jdk提供)
四类八种
整型(byte、short 、int 、long)
浮点型 (float 、 double)
字符类型(char)
布尔类型(boolean)
整数的默认数据类型都是int,浮点数默认是double。
String属于引用数据类型中的类
conversion
- byte、short、 char 运算转成int,和int运算也是转换成int
- byte 、short、char 任意和long运算,提升为long
- byte 、short、int、long和float,一律转换成float计算。
- byte 、short、int、long、float与double,一律转换成double计算。结果都是double.
精度问题:
- 当由大→小,会发生精度损失。
- int ,long → float,可能会发生精度损失。
- long →double,也可能有精度损失。
cast
- 注意boolean类型不能通过强制转换语法转换。
- 转换时注意取值范围。
向上转型(子类继承父类)[引用数据类型][自动类型转换]。
向下转型(子类扩充)[引用数据类型][强制类型转换]。
byte b; b=1+2; //不报错 数据类型针对变量。这里是常量 int a = 1; 1是int类型,需要一个int类型来接收。
b = a + 1; //报错

原码、反码、 补码
数在机器中是二进制的---机器数
原码:机器数的符号位加上对应真值的绝对值。
- 1000 00001 -----> -1
反码:
- 正数的反码是其本身。
- 负数的反码是除符号位,其余各位取反。 1000 0001 的反码是 1111 1110
补码:
- 正数的补码是其本身。
- 负数的补码是反码+1;
double a = Math.pow(2,3)//次幂
log: 8.0
运算位运算比较快 时间复杂度O(1)
三目运算符
(条件表达式)?表达式1:表达式2
- 条件表达式是布尔表达式
- 它是一个表达式,一定会有结果,需要有接收的地方。
- 三目运算符是一种选择结构。
switch
switch:
expression:
a:byte
b:short
c.int
d:char
e:枚举类型
f:String
不能是boolean
case value1:
value1应该和expression的数据类型保持一致。
在两个布尔变量里if(boolean a ^ boolean b)就是 当a和b同真或同假时为真,不然为假。
/** * 3,有三个int变量,a, b, c假设三个变量中有两个变量的值相同,请问如何快速求出,那个和其他两个变量不同的第三个变量的值?(代码+截图)(提示:自己和自己异或为0,任何数和0异或的结果是自己) */ /** * * 方法一 三目运算符 * */ boolean c1 = (a==b);//true 不同为c false boolean c2 = (a==c);// true 不同为b int temp = c1?c:c2?b:a; System.out.println("不同的数是:"+temp) ; /** * * 方法二、逻辑 * */ if(a==b){ System.out.println("不同的数是:"+c) ;// 不同的是c }else if(a==c){ System.out.println("不同的数是:"+b) ;// a和b不同,a和c相同,b为不同 } else { //a和b不同 a和c不同 那么b和c相同 System.out.println("不同的数是:"+a) ; } /** * * 自己和自己异或为0 任何数和0异或 是自己 */ System.out.println(a^a); System.out.println(a^0); int temp1 = ((a^b)==0) ?c:((a^c) == 0)?b:a; System.out.println("不同的数是:"+temp1) ; }
/** * * 4. 任给一个int类型的正整数,如何判断该整数的值,是否是2的整数次幂?(代码+截图) * (提示:任何是2整数次幂的十进制数的二进制有效位都只有一个1) * 感觉是正整数 * * 分析; 2的一次幂 10 * 2 2 --=4 ----> 100 * 2 2 2 = 8 1000 * 1000 * 0111 * 0000 * 查阅资料 二进制减一 & 是否为0 * 1001 * 1000 * 1000 */ public class fourwork { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int b = 2; // 0000 0010 // xxx System.out.println("请输入一个整数:"); int input = sc.nextInt(); if( input < 0 ){ System.out.println("请输入一个正整数"); return; } /** * * /2取余 */ int pow = input%2; if(pow == 0){ System.out.println(input+"是2的整数次幂"); }else{ System.out.println(input+"不是2的整数次幂"); } /** * * 二进制 */ if((input & input-1)== 0){ System.out.println(input+"是2的整数次幂"); }else{ System.out.println(input+"不是2的整数次幂"); } }
** * * 7,2. 判断一个5位数是否是回文数(比如12321) * 个位等于万位 * 十位等于千位 * * 不用遍历... * 12321/10000=1 %10 0 --- 个位 123321 * 12321/1000=12 % 10 2 * 12321/100=123 %10 3 * 12321/10=1232 .... * 12321/1=12321 --万位 *思路来源网络 * */ public class sevenwork { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入一个五位数:"); int input = sc.nextInt(); if(input < 0 ){ System.out.println("输入错误!"); return; } int gewei = input/10000 %10 ; int shiwei = input/1000 %10; //int baiwei = input/100 %10; int qianwei = input/10 %10; int wanwei = input/1 %10; if(input/10000 > 10 || gewei ==0 ){ System.out.println("不是一个五位数"); return; } if(gewei == wanwei && shiwei == qianwei){ System.out.println(input + "是一个五位回文数"); }else{ System.out.println(input + "不是一个五位回文数"); } }
学习记录,并不保证内容的准确性。
浙公网安备 33010602011771号