目录
[一. IDE](#一. IDE)
[(1). 使用IDE的原因:](#(1). 使用IDE的原因:)
[(2). 创建和使用:](#(2). 创建和使用:)
[(3). 常用快捷方式与设置](#(3). 常用快捷方式与设置)
[(4). 注释](#(4). 注释)
[(5). 关键字](#(5). 关键字)
[(6). 标识符](#(6). 标识符)
[(7). 变量](#(7). 变量)
[(8). 数据类型](#(8). 数据类型)
1) 整数类型 整数类型)
2) 浮点类型 浮点类型)
3) 布尔类型(boolean) 布尔类型(boolean))
4) 字符类型(char) 字符类型(char))
5) 字符串 字符串)
6) 基本数据类之间的转换 基本数据类之间的转换)
[(9). 运算符](#(9). 运算符)
1) 算术运算符 算术运算符)
2) 比较运算符 比较运算符)
3) 赋值运算符 赋值运算符)
4) 逻辑运算符 逻辑运算符)
5) 条件运算符 条件运算符)
6) 位运算符 位运算符)
[(10). 控制台输入](#(10). 控制台输入)
[(11). 循环语句](#(11). 循环语句)
1) if判断和switch...case循环 if判断和switch...case循环)
2) while和do while循环 while和do while循环)
3) for循环 for循环)
4) 循环嵌套 循环嵌套)
[(12). 函数(java中的方法)](#(12). 函数(java中的方法))
[(13). return作用](#(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). 关键字
注意:
-
在语言中, 被赋予特定含义的单词 所有字母都是小写的
-
保留字: const 和 goto(java中虽然没有用来作为关键字,但是不能拿来命名)
(6). 标识符
1)定义: 为变量 函数 类 包 等命名的字符序列
2)命名规则: 允许使用26个英文字母 数字 下划线_ 和美元$ ----数字不能开头-----不能是关键字 和保留字 但是可以包含关键字和保留字----不能有空格 长度无限制----严格区分大小写 ----要见名之意 userAge userName userPassword studentAge studentName----类 名首字母大 写 变量 名函数 名首字母小 写----多个单词组成,建议第二个单词开始,首字母都大写 驼峰表示 ----常量名全部大写 多个单词之间用下划线_连接 MAX_VALUE
java
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)结构: [修饰符] 数据类型 变量名 = 值 ; (强类型语言)
java
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中数值类型都是有符号的,没有无符号主线程
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
java
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);//false
System.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)
注意:
布尔类型的值只能用true false表示
逻辑运算,比较运算之后的值 也只能是true/false 不能用0和非0表示真/假
java
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)
字符类型表示一个字符 2字节
计算机如何存储和表示字符 ?
ASCII a--97--011011 美国信息标准码 只能表示英文字母和英文字符
java中使用的是Unicode编码(万国码),容纳全球各个国家的文字子符,其他的编码表都兼容了ASCII那一部分的内容
java
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);//20013
System.out.println(c2);
System.out.println(c3);
}
}
5) 字符串
java中提供String类来表示字符串 格式: String 变量名 = "字符串值";
java
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). 精度降低了 (浮点--整数)
char byte short ---->int---->long---->float---->double
由于小数底层的计算方式和整数不同, 所以4字节的float 大于 4字节int,也大于8字节的long
java
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);//10
System.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: 减法运算
* / % 只能用作算术运算 数值与数值运算
自增运算(++),自减运算(--) 都只能用于数值类型
java
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+1
a++;
System.out.println(a);//7
--a; //a=a-1
a--;
System.out.println(a);//5
int a = 5;
//int b = ++a + 2; 在混合运算时 ++在前 先增再判断
//System.out.println(b);//8
int b = a++ + 2; // 在混合运算时 ++在后 先判断再增
System.out.println(b);//7
System.out.println(a);//6
}
}
2) 比较运算符
== 和 != 可以用于数值 之间比大小,还可以比较布尔 类型, 还可以比较引用数据类型
<= >= 和< > 只能用于数值 之间的比较 , 包含字符类型 返回值为 true/false
java
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) 逻辑运算符
& 逻辑与 | 逻辑或 **!**逻辑非
&& 短路与 || 短路或 ^ 逻辑异或
运算符,都只能是逻辑值与逻辑值之间的运算
- 逻辑与(&和&&):
当所有的表达式结果为true,结果才为true, 只要有一个表达式为false,结果就为false
区别:& : 不会出现短路现象,已经有表达式为false,后面的表达式还会执行
&&: 会出现短路现象 所以也称为短路与.一旦有表达式值为false, 后面其他的表达式就不执行,称为短路了 (常用,效率高)
2. 逻辑或( | 和 || ) :子表达式中只要有一个是true,结果就为true
区别:| 不会 出现短路现象 有表达式返回true,但是后面的表达式还会执行
|| 会出现短路现象 一旦出现有表达式返回true,后面的表达式就不会执行了
java
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 = true
System.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 = true
System.out.println(a<b && c<b); // true && false = false
System.out.println(a>b && c++>b); // false && true = false
System.out.println(c);//20
}
System.out.println(a<b | c>b); // true | true = true
System.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 = true
System.out.println(a<b || c<b); // true || false = true
System.out.println(a<b || c++<b); // true || false = true
System.out.println(c);
}
}
^ 逻辑异或 : 突出重点就是 异 不同返回true,相同返回false
! 逻辑非 : 取反
java
package day3;
public class OperDemo5 {
System.out.println(a<b ^ c>b);// true ^ true = false
System.out.println(a>b ^ c>b);//false ^ true = true
System.out.println(!true);//false
System.out.println(!(a>b));//true
/*
int a = 10, b = 10, c = 10;
boolean result = a++ == 10 && b-- == 10 || ++c == 10;
result= true
a=11
b=9
c=10(短路了,没有执行)
*/
}
}
5) 条件运算符
格式: 结果 = (条件表达式)? 结果1 : 结果2;
注意: 当条件表达式结果为true 时,返回**?**后面的结果
当条件表达式结果为false时,返回**:**后面的结果
条件表达式必定要返回结果(与 if{ }else{ }不一样) 返回的结果 与 接收变量类型都得一致
java
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) 位运算符
定义: 是对整数的二进制位进行运算的
使用方法:
<< 左移 二进制比特位向左移动,后面空缺补0
>> 右移 二进制比特位向右移动(带符号), 正数移动后,符号位补0, 负数移动后,符号为补1
>>> 无符号右移 不管是正数还是负数,移动后统一补0, 结果肯定为整数
- 注意:
& 和 | 既可以当做逻辑运算符,也可以当做位运算符 当&和 | 左右是逻辑值(true/false) 时,当做逻辑运算符 当&和 | 左右是正数时,当做位运算符
java
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 1000
int b = a<<2;//左移两位
System.out.println(b);
//0000 1000
//0000 0010
int 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);//4
int x = -8;
int y = x>>>1;
System.out.println(y);//2147483644
}
}
- 定义:
计算机以补码存储数值 , 正数的补码 反码 原码三码合一 , 负数以补码形式表示
- 数值二进制为什么要用补码存储 ?
因为计算机只做加法, 把减法 转换为加法
3-2 = 1 --> 3+(-2) = 1
+3 0000 0011
-2 1111 1110
0000 0001
2 0000 0010
1111 1101 反码 +1
1111 1110 -2的补码
java
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 5
0000 0100 4
0000 0100 4
*/
System.out.println(a & b);//4
/*
| 每一列只要一位是1,结果就是1,都没有1时才是0
0000 0101 5
0000 0100 4
0000 0101 5
*/
System.out.println(a | b);//5
int x = 4;
int y = 5;
/*
^ 异或 两个数对应列的比特位相同结果0 不同结果为1
0000 0100 4
0000 0101 5
0000 0001 1
*/
System.out.println(x^y);
/*
~ 取反
0000 0100
1111 1011
*/
System.out.println(~x);//-5
}
}
(10). 控制台输入
java
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(字符串) 枚举
break 用在Switch循环语句中, 结束整个循环语句
continue 用在循环语句中 结束当次循环
java
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(条件表达式)
java
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) 循环嵌套
java
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 值;
}
java
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作用
java
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");
}
}
}