目录
一. IDE
(1). 使用IDE的原因:
(2). 创建和使用:
(3). 常用快捷方式与设置
(4). 注释
(5). 关键字
(6). 标识符
(7). 变量
(8). 数据类型
1) 整数类型
2) 浮点类型
3) 布尔类型(boolean)
4) 字符类型(char)
5) 字符串
6) 基本数据类之间的转换
(9). 运算符
1) 算术运算符
2) 比较运算符
3) 赋值运算符
4) 逻辑运算符
5) 条件运算符
6) 位运算符
(10). 控制台输入
(11). 循环语句
1) if判断和switch...case循环
2) while和do while循环
3) for循环
4) 循环嵌套
(12). 函数(java中的方法)
(13). return作用
一. IDE
(1). 使用IDE的原因:
如果使用记事本进行编写代码, 手动编译没有提示, 写错了也不知道,实际开发用记事本 效率很低.
IDE (Integrated Development Environment )集成开发环境 所有开发工具统称IDE, 里面集成编辑器 编译器(调我们自己安装的jdk) ,调试器
例如: 前端开发的Hbuildex
Intellij IDEA 收费 开发工具( jdk 是java开发运行的环境)
Eclipse 开源
(2). 创建和使用:
现在市场上大多都采用Intellij IDEA,故以Intellij IDEA为例
查看软件可使用的时间(有一个月的免费使用期)
项目的创建及相关设置
(3). 常用快捷方式与设置
sout ----->System.out.println( );
main----->public static void main(String[] args) { }
fori ----->for (int i = 0; i < ; i++) { }
(4). 注释
1)定义: 用特定的符号进行标记的内容 说明程序功能 调试程序
2)使用方法:
// 单行注释 Ctrl+/
/* */ 多行注释 Ctrl+shift+/
/** */ 文档注释 可以为类 函数 变量进行说明 ,在别的地方调用时 ,会显示注释说明
(5). 关键字
注意:
1) 在语言中, 被赋予特定含义的单词 所有字母都是小写的
2) 保留字: const 和 goto (java中虽然没有用来作为关键字,但是不能拿来命名)
(6). 标识符
1)定义: 为变量 函数 类 包 等命名的字符序列
2)命名规则: 允许使用26个英文字母 数字 下划线_ 和美元$----数字不能开头-----不能是关键字和保留字但是可以包含关键字和保留字----不能有空格 长度无限制----严格区分大小写----要见名之意 userAge userName userPassword studentAge studentName----类名首字母大写 变量名函数名首字母小写----多个单词组成,建议第二个单词开始,首字母都大写 驼峰表示----常量名全部大写 多个单词之间用下划线_连接 MAX_VALUE
public class Demo1 {public static void main(String[] args) {// int a# = 5;// int 5a;int a_ = 5;int a$;int user_age;// int goto;int goto1;
// int user age; int a; int A; abc aa;}
}
(7). 变量
1)定义:
变量是程序中最基础的存储单元, 运行时值是可以改变的
变量就是在内存中开辟的一块空间
使用变量名访问这块空间(java中不再使用指针访问内存)
2)使用方法: 要先声明,后赋值,使用前必须是赋过值的
3)结构: [修饰符] 数据类型 变量名 = 值 ; (强类型语言)
package day2;
public class Demo2 {
public static void main(String[] args) {int age = 20;age = 22;System.out.println("age="+age);//int height;//System.out.println(height); 报错 变量在使用前必须要初始化int a,b,c;int x=10,y=20,z=30;System.out.println("x="+x+",y="+y+",z="+z);
}
}
(8). 数据类型
可以指导数据在内存中如何存储(分配多大空间)
1) 整数类型
基本数据类中的整数类型:
byte 1字节 -128 -- +127
short 2字节 -32768 -- +32767
int 4字节 -2147483648 -- 2147483647
long 8字节 - 9223372036854775808 -- +9223372036854775807注意: java中数值类型都是有符号的,没有无符号主线程
package day2;public class Demo3 {public static void main(String[] args) {byte ba = -128;byte bb = 10;
short sa = 20;
int ia = 2147483647;/*int a = 10; 10称为字面常量 整数字面常量默认是int类型需要给long类型赋值时,一旦值超过了int的范围,需要在后面添加 L/l 一般建议使用大写L*/long la = 2147483648L;//整数其他表示形式:int x = 12; //12是十进制表示形式
int m = 0b111; //二进制整数表示 0b开头System.out.println(m);
int n = 071; //八进制整数表示 0开头System.out.println(n);
int y = 0x11; //十六进制整数表示 0x开头System.out.println(y);
}
}
2) 浮点类型
float 4字节 -3.403E38~3.4028235E38
double 8字节
注意: 浮点类型字面常量是 double类型 ,需要表示float字面常量时,在字面常量后面加 F/f
package day2;import java.math.BigDecimal;public class Demo4 {public static void main(String[] args) {float f1 = 10;float f2 = 10.5F;
double d = 10;double d1 = 10.5;
System.out.println(314.2);//十进制表示
System.out.println(3.14E2);//科学计数法表示
System.out.println(222.22222222222222f);//有效位数是8位 单精度
System.out.println(222.22222222222222);//双精度 是float的两倍
/*有的小数,在底层存储时,不能做到精确存储,小数部分无限不循环的,只能做到近似值涉及金额尽量不用float,double*/System.out.println(0.1+0.2==0.3);//falseSystem.out.println(1.0-0.7);//0.30000000000000004//BigDecimal bigDecimal1 = new BigDecimal("0.1");//BigDecimal是大浮点数,更精确//BigDecimal bigDecimal2 = new BigDecimal("0.2");//System.out.println(bigDecimal1.add(bigDecimal2));//0.3 }
}
3) 布尔类型(boolean)
注意:
1. 布尔类型的值只能用true false表示
2. 逻辑运算,比较运算之后的值 也只能是true/false 不能用0和非0表示真/假
package day2;public class Demo5 {public static void main(String[] args) {boolean b = true;boolean b1 = false;
int a =10;int c = 20;if(1<a && a<c){System.out.println("qqqqqqqqqqqqq");}System.out.println(a<c);System.out.println(a>c);
}
}
4) 字符类型(char)
1. 字符类型表示一个字符 2字节
2. 计算机如何存储和表示字符 ?
ASCII a--97--011011 美国信息标准码 只能表示英文字母和英文字符
java中使用的是Unicode编码(万国码),容纳全球各个国家的文字子符,其他的编码表都兼容了ASCII那一部分的内容
package day2;public class Demo6 {public static void main(String[] args) {char c1 = 'a';char c2 = '中';char c3 = '国';System.out.println(c1+0); //97
//char类型可以进行算术运算的 运算时用的是字符在编码表中的整数编号计算的System.out.println(c1);System.out.println(c2+0);//20013System.out.println(c2);System.out.println(c3);
}
}
5) 字符串
java中提供String类来表示字符串 格式: String 变量名 = "字符串值";
package day2;public class Demo7 {public static void main(String[] args) {//c语言中的字符串, 用字符数组存储,且没有单独的字符串类型,而是使用字符数组来表示//char a[10] = {'h','e','l','l','o','\0'};//char a[] = {"hello"};//char a[] = "hello";// "abc" == ['a','b','c']String s = "abcd";String name = "jim";String address = "陕西汉中";System.out.println(s);System.out.println("姓名:"+name+" 地址:"+address); //字符串可以使用 + 进行拼接System.out.println(s.length());
}
}
6) 基本数据类之间的转换
除了boolean类型之外, 其他7种基本数据类型之间可以进行相互转换 ,转换规则如下:
byte 1字节
short 2字节
char 2字节
int 4字节
long 8字节
float 4字节
double 8字节
注意:
(默认转换) 小容量类型 ---> 大容量类型
(强制转换) 大容量类型 ---> 小容量类型
1. 默认情况下 小容量类型 可以 转换为大容量类型
大容量类型 不可以 转为小容量类型 (而如果需要转换 只能通过强制类型转换 )
2. 强制类型转换可能会出现以下问题:
(1). 溢出, 因为小类型装不下
(2). 精度降低了 (浮点--整数)
char byte short ---->int---->long---->float---->double
由于小数底层的计算方式和整数不同, 所以4字节的float 大于 4字节int,也大于8字节的long
package day2;public class Demo8 {public static void main(String[] args) {/*默认转换: 小容量类型 ---> 大容量类型byte a1 = 10;int a2 = a1;float a3 = a2;System.out.println(a2);*/
int a = 258;byte b = (byte)a;System.out.println(b);//2
float c = 10.5f;int d = (int)c;double e = c;System.out.println(d);//10System.out.println(e);
//在混合运算时, 小类型默认也是会转为大类型的int f = (int)(10+'a'+10.5);System.out.println(10+'a'+10.5);//最终结果的数据类型是? double}
}
(9). 运算符
1) 算术运算符
+ - * / % ++ --
+: 作用1: 正号 作用2: 加法运算 作用3:字符串连接符
-: 作用1: 符号 作用2: 减法运算
* / % 只能用作算术运算 数值与数值运算自增运算(++),自减运算(--) 都只能用于数值类型
package day2;public class Demo9 {
public static void main(String[] args) {int a = +30;int b = 20;System.out.println(a+b);System.out.println(a-b);System.out.println(a+'a');// 加法运算System.out.println(a-'a');// 减法运算//System.out.println(a+true);// 不可以int age = 20;String name = "jim";System.out.println("姓名:"+name+",age:"+age);
System.out.println("---------------------");System.out.println(a*b);System.out.println(a/b);//1 整数/整数==结果是整数System.out.println(a%b); //取模 求余数
int a = 5;++a; //a=a+1a++;System.out.println(a);//7--a; //a=a-1a--;System.out.println(a);//5
int a = 5;//int b = ++a + 2; 在混合运算时 ++在前 先增再判断//System.out.println(b);//8int b = a++ + 2; // 在混合运算时 ++在后 先判断再增System.out.println(b);//7System.out.println(a);//6
}
}
2) 比较运算符
== 和 != 可以用于数值之间比大小,还可以比较布尔类型, 还可以比较引用数据类型
<= >= 和< > 只能用于数值之间的比较 , 包含字符类型 返回值为 true/false
System.out.println(10==10);
System.out.println(ture==ture);
System.out.println("abc"=="abcd");
System.out.println('a'>10);
System.out.println(10>5);
System.out.println(10>10);
3) 赋值运算符
= 把右边的值赋给左边变量,注意右边字面常量和左边的字面常量需要一致(也可以小类型隐式的转换为大类型的),注意强制类转换
+= a+=b 相当于a=a+b
-= a-=b 相当于a=a-b
*= a*=b 相当于a=a*b
%= a%=b 相当于a=a%b
4) 逻辑运算符
& 逻辑与 | 逻辑或 ! 逻辑非
&& 短路与 || 短路或 ^ 逻辑异或
运算符,都只能是逻辑值与逻辑值之间的运算
1. 逻辑与(&和&&):
当所有的表达式结果为true,结果才为true, 只要有一个表达式为false,结果就为false
区别:
& : 不会出现短路现象,已经有表达式为false,后面的表达式还会执行
&&: 会出现短路现象 所以也称为短路与.一旦有表达式值为false, 后面其他的表达式就不执行,称为短路了 (常用,效率高)
2. 逻辑或( | 和 || ) :
子表达式中只要有一个是true,结果就为true
区别:
| 不会出现短路现象 有表达式返回true,但是后面的表达式还会执行
|| 会出现短路现象 一旦出现有表达式返回true,后面的表达式就不会执行了
package day3;public class OperDemo3 {public static void main(String[] args) {int a = 10;int b = 15;int c = 20;System.out.println(a<b & c>b); // true & true = trueSystem.out.println(a<b & c<b); // true & false = false//System.out.println(a>b & c++>b); // false & true = false 没有短路,前面为false 后面c++依然执行//System.out.println(c);21
System.out.println(a<b && c>b); // true && true = trueSystem.out.println(a<b && c<b); // true && false = falseSystem.out.println(a>b && c++>b); // false && true = falseSystem.out.println(c);//20
}System.out.println(a<b | c>b); // true | true = trueSystem.out.println(a<b | c<b); // true | false = true//System.out.println(a<b | c++<b); // true | false = true//System.out.println(c);
System.out.println(a<b || c>b); // true || true = trueSystem.out.println(a<b || c<b); // true || false = trueSystem.out.println(a<b || c++<b); // true || false = trueSystem.out.println(c);
}
}
3. ^ 逻辑异或 : 突出重点就是 异 不同返回true,相同返回false
4. ! 逻辑非 : 取反
package day3;public class OperDemo5 {System.out.println(a<b ^ c>b);// true ^ true = falseSystem.out.println(a>b ^ c>b);//false ^ true = true
System.out.println(!true);//falseSystem.out.println(!(a>b));//true
/*int a = 10, b = 10, c = 10;boolean result = a++ == 10 && b-- == 10 || ++c == 10;result= truea=11b=9c=10(短路了,没有执行)*/
}
}
5) 条件运算符
1. 格式: 结果 = (条件表达式)? 结果1 : 结果2;
2. 注意: 当条件表达式结果为true 时,返回?后面的结果
当条件表达式结果为false时,返回: 后面的结果
条件表达式必定要返回结果(与 if{ }else{ }不一样) 返回的结果 与 接收变量类型都得一致
package day3;public class OperDemo6 {public static void main(String[] args) {/* int score = 50;String result = (score>=60)?"及格":"不及格";System.out.println(result);*/
int a = 10;int b = 20;int max = (a>b)?a:b;System.out.println(max);
}
}
6) 位运算符
1. 定义: 是对整数的二进制位进行运算的
2. 使用方法:
<< 左移 二进制比特位向左移动,后面空缺补0
>> 右移 二进制比特位向右移动(带符号), 正数移动后,符号位补0, 负数移动后,符号为补1
>>> 无符号右移 不管是正数还是负数,移动后统一补0, 结果肯定为整数
3. 注意:
& 和 | 既可以当做逻辑运算符,也可以当做位运算符 当&和 | 左右是逻辑值(true/false) 时,当做逻辑运算符 当&和 | 左右是正数时,当做位运算符
package day3;import java.lang.reflect.Array; import java.util.Arrays; import java.util.HashMap;public class OperDemo7 {public static void main(String[] args) {int a = 2;// 0000 0010// 0000 1000int b = a<<2;//左移两位System.out.println(b);
//0000 1000//0000 0010int c = -8;int d = c>>2;System.out.println(d);//-2
/* int x = 8;int y = x>>>1;System.out.println(y);//4*/
int x = 8;int y = x>>>1;System.out.println(y);//4int x = -8;int y = x>>>1;System.out.println(y);//2147483644
}
}
1. 定义:
计算机以补码存储数值 , 正数的补码 反码 原码三码合一 , 负数以补码形式表示
2. 数值二进制为什么要用补码存储 ?因为计算机只做加法, 把减法 转换为加法
3-2 = 1 --> 3+(-2) = 1
+3 0000 0011
-2 1111 1110
0000 0001
2 0000 0010
1111 1101 反码 +1
1111 1110 -2的补码
package day3;public class OperDemo8 {public static void main(String[] args) {//System.out.println(true & false);//System.out.println(true | false);
int a = 5;int b = 4;/*& 把两个整数的对应的二进制位进行 列 运算(每一列都是1,结果就是1,否则结果为0) 0000 0101 50000 0100 40000 0100 4*/System.out.println(a & b);//4
/*| 每一列只要一位是1,结果就是1,都没有1时才是00000 0101 50000 0100 40000 0101 5*/System.out.println(a | b);//5
int x = 4;int y = 5;/*^ 异或 两个数对应列的比特位相同结果0 不同结果为10000 0100 40000 0101 5 0000 0001 1*/System.out.println(x^y);
/*~ 取反0000 01001111 1011*/System.out.println(~x);//-5}
}
(10). 控制台输入
package day3;//导入类库 import java.util.Scanner;public class ScannerDemo {public static void main(String[] args) {//创建一个输入对象Scanner scanner = new Scanner(System.in);//相当于导库,调用函数System.out.println("请输入姓名");String name = scanner.next();//从控制台上读取字符串System.out.println("请输入年龄");int age = scanner.nextInt();System.out.println(name+":"+age);
}
}
(11)循环语句
循环定义: 满足某种条件时,重复执行某些操作 while do while for 循环有四个部分 循环变量初始化 循环条件 循环体 循环变量迭代
1) if判断和switch...case循环
if(条件表达式 a>b && c>d ture / false ){ }
if(条件表达式){ }else{ }
if(条件表达式){ }else if (条件表达式){ }.......
if(条件表达式){ }else if{ }......else{ }
注意: if后面如果没有 { },只能控制与其相邻的那一行
switch...case语句
switch(表达式){
case 字面常量1 : 语句块1 [break];
case 字面常量2 : 语句块2 [break];
case 字面常量3 : 语句块3 [break];
....
default: 默认语句块
}注意: 1. 表达式值 可以是 byte short int char String(字符串) 枚举
2. break 用在Switch循环语句中, 结束整个循环语句
3. continue 用在循环语句中 结束当次循环
package day3;import java.util.Scanner;public class SwitchDemo {
public static void main(String[] args) {int w = 3;switch (w){case 1:System.out.println("星期一");break;case 2:System.out.println("星期二");break;case 3:System.out.println("星期三");break;default:System.out.println("输入不合法");}String w = "3";switch (w){case "1":System.out.println("星期一");break;case "2":System.out.println("星期二");break;case "3":System.out.println("星期三");break;default:System.out.println("输入不合法");}
/*从控制台输入一个整数月份打印该月份所属的季节,3,4,5春季 6,7,8夏季 9, 10, 11秋季 12 ,1,2 冬季分别用if switch实现*/Scanner scanner = new Scanner(System.in);int month = scanner.nextInt();if(month==3||month==4||month==5){System.out.println(month+"是春季");}else if(month>=6&&month<=8){System.out.println(month+"是夏季");}else if(month>=9&&month<=11){System.out.println(month+"是秋季");}else if(month==12||month==1||month==2){System.out.println(month+"是冬季");}else{System.out.println("输入有误");}
//switch实现month = scanner.nextInt();switch (month) {case 1:case 2:case 12 :System.out.println(month+"是冬季");break;case 3:case 4:case 5 :System.out.println(month+"是春季");break;case 6:case 7:case 8 :System.out.println(month+"是夏季");break;case 9:case 10:case 11 :System.out.println(month+"是秋季");break;default:System.out.println("输入有误");}
}
}
2) while和do while循环
1.while循环:
while (条件){
}2.do while 循环
do{
}while(条件表达式)
package day3;import java.util.Scanner;public class WhileDemo {public static void main(String[] args) {int a = 1;while (a<=5){System.out.println(a);//a++;//a=a+1;//a+=1;a+=2;}
int a = 5;while (a>=1){System.out.println(a);a--;}
// while实现死循环while(true){System.out.println("111");}
int a = 8;do {System.out.println(a);a++;}while (a<=5);
/*猜数字游戏循环让用户输入一个数字,当输入的值与x相同时,循环就可以结束猜小了 提示小了猜大了 提示大了相等退出循环 使用break关键字退出循环记录一下猜的次数*/int x = 30;int count = 0;Scanner scanner = new Scanner(System.in);while (true){count++;int g = scanner.nextInt();if(g>x){System.out.println("猜大了");}if(g<x){System.out.println("猜小了");}if(g==x){System.out.println("你经过了"+count+"次猜对了");break;}}
//一直青蛙在一口11米深的井底向上爬,白天向上爬3米,晚上向下滑2米,总共需要几天可以爬出.int h = 0; //记录每天爬的高度int sum = 0;while (true){sum++;h+=3;if(h>=11){System.out.println("经过了"+sum+"天爬出去了");break;}h-=2;}
}
}
3) for循环
for(变量初始; 循环条件; 变量迭代){ }
4) 循环嵌套
public static void printStar(int row,int col){int row =4;int col= 5;for(int i=0;i<=row;i++){//外层循环,控制行数for(int j=1;j<= col ; j++){//内层循环,控制列数System.out.print("*");
//注意:在内层循环使用break 只结束内层循环, 不结束外层循环// 如果想要结束外层循环 需要使用标签}System.out.println();}
}
标签格式如下:
outloop: for( ){//结束整个循环
for( ){
循环体
break outloop;
}
}
(12). 函数(java中的方法)
就是写某个特定功能的代码,把他写在一组有名称的代码块{ }中,需要使用的时候,通过函数名调用(调用时,需要通过类名调用)
[访问权限修饰符] [修饰符] 返回值类型 函数名(参数列表) {
方法体
(如果有返回值) return 值;
}
package day4;
public class Demo3 {public static void main(String[] args) {//Demo3是类名Demo3.print99(5);//调用含参的99乘法表函数System.out.println("------------------");Demo3.print99();//调用不含参的00乘法表函数Demo3.printStar(5,10);}
public static void print99(int row){//含参的for (int i =1;i<= row ; i++){for(int j=1;j<=i ;j++){System.out.print(j+"*"+i+"="+ i*j +" ");}System.out.println();//换行}}
public static void print99(){//不含参for (int i =1;i<= 9 ; i++){for(int j=1;j<=i ;j++){System.out.print(j+"*"+i+"="+i*j+" ");}System.out.println();//换行}}
public static void printStar(int row,int col){//不含参for(int i=0;i<=row;i++){//外层循环,控制行数for(int j=1;j<= col ; j++){System.out.print("*");}System.out.println();}}
}
注意: 在java中可以定义两个函数名一样的方法, 称为方法的重载,区分关键在于是否有参数. void是没有返回值的类型, 可以不用写return; 如果定义了返回值的类型,就必须要写返回值
(13). return作用
package day4;
public class Demo5 {public static void main(String[] args) {Demo5.print(98);}
//void修饰的函数可以使用return,且后面不能添加任何值(return;)//如果是return 0 ,相当于有返回值public static void print(int score){if(score<0 || score >100){System.out.println("成绩不合法");return;}if(score>= 90){System.out.println("A");return;//return是终止,不return的话会出现问题,因为成绩也满足>=80,会同时打印AB}if (score>=80){System.out.println("B");}}
}