JAVA学习笔记
时间复杂度
对于n>16时,时间复杂度的优劣结果为:
O(1)<O(log2n)<O(n)<O(nlog2n)<O(n^2^)<O(n^3^)<O(2)
CMD
1981 MS-DOS
1981-4-27 xerox 图形化界面
操作 说明
盘符名称: 盘符切换。E:回车,表示切换到E盘。
dir 查看当前路径下的内容。
cd 目录 进入单级目录。cd itheima
cd .. 回退到上一级目录。
cd 目录1\目录2… 进入多级目录。cd itheima\JavaSE
cd \ 回退到盘符目录。
cls 清屏。
exit 退出命令提示符窗口。
ctrl+滚轮 放大 缩小
win+E 打开我的电脑
1.5 环境变量
作用:
如果我想要在CMD的任意目录下,都可以启动某一个软件,那么就可以把这个软件的路径配置到环境变量中的
PATH里面。
在启动软件的时候,操作系统会先在当前路径下找,如果在当前录课没有再到环境变量的路径中去找。如果都找不
到就提示无法启动。
1&2 安装、下载与调试JDK与eclipse
JAVA EE可以直接调用 JAVA SE代码
JAVA EE 面向互联网网页,企业级别
JAVA SE 面向个人编程
JAVA ME面向嵌入式编程
API文档 应用程序编程接口
Application Programming Interface
方法,变量,结构
查看 http://docs.oracle.com/javase/8/docs/api/index.html
下载 http://www.oracle.com/index.html
CMD下编译与运行
大括号,小括号需要成对先书写,在中间双回车写内容
hello world.java
javac.exe 用于编译(需要后缀)
javac hello world.java
java.exe 用于运行(无需后缀)
java hello world
汉化包安装,放在eclipse目录里的drops里
环境配置方式
以前下载的老版本的JDK是没有自动配置的,而且自动配置的也只包含了4个工具而已,所以我们需要删掉已经配置
完毕的,再次重新配置Path环境变量。
①JAVA_HOME:告诉操作系统JDK安装在了哪个位置(未来其他技术要通过这个找JDK)
②Path:告诉操作系统JDK提供的javac(编译)、java(执行)命令安装到了哪个位置
1.5.3win10的bug
当电脑重启之后,环境变量失效了。表示操作系统不支持自定义的环境变量。
步骤:
还是要配置JAVA_HOME给以后的相关软件去使用
我们可以把java和javac的完整路径配置到PATH
notepad++设置
右键点击java文件,选择edit with notepad++。
点击设置,再点击首选项。在弹出的页面当中,左侧选择新建,中间选择Java,右侧选择ANSI。
IDEA详述
快捷键
psvm
1 | public static void main(String[] args) |
sout
1 | System.out.println(); |
改界面主题,字体及大小conslos
更改注释颜色 settings editor languages default
自动导包(比如输入的时候)
修改类名
必须修改类的文件名,不能再调试窗口改
新建模块
再file structure中加modle,并命名
新建项目
new project-empty project
关闭项目
file- close project
IDE分类
JAVA 用IDEA
C语言 用Clion
Python 用Pycharm
大数据用(大象)hadoop
企业应用开发(针对大访问量,仅同go语言具有此功能)
JAVA可以跨平台
C语言不能跨平台
JDK(Java Development Kit)称为Java开发工具,包含了JRE和开发工具
总结:我们只需安装JDK即可,它包含了java的运行环境和虚拟机。
JDK包含JRE
常见BUG
必须使用英文的标点符号
System 必须使用S大写的
创建包、类、接口
文件夹下创建包
包的名称(com.XX)
包下创建类(XX.java)
包下创建接口(XX.java)
public class Demo{
1 | public static void Demo(){ |
保存后再运行
syso
//alt +”/“ 自动填补
1 | package com.new20221009; |
属于方法,必须要跟再变量之后,中间以.隔开
1 | str.toLowerCase() |
3.2 基本数据类型
3.2.1 整数
byte 1字节=8位 -128-127
short 2字节
int 4字节
long 8字节
1 | byte a = 12; |
long 型赋值时必须尾部加L
public class Demo{
public static void main(string[] args){
long a=123456789 * 987654321;
long b=123456789L * 987654321L;
// 超出了int值的取值范围,溢出,出现错误值
System. out. println(a);
System. out. println(b);
}
int 是 整形的默认类型
double 是 浮点型的默认类型
3.2.2 浮点型(近似值,不准确)
float 4字节
double 8字节
1 | float a = 1.1F |
float 尾部加F
double 尾部可加D ,d ,不加。
近似值,不准确
1 | double a=4.35*100; |
使用Java提供取绝对值方法
Math.abs()
与最小数”1e-6”相比较
3.2.3 字符
用==单引号==包含的可打印的==单个==符号
双引号括起来的是字符串,而非字符
字符串需要用双引号引起来
‘8’所指示的是其unicode码
1 | System.out.println('8'*2); |
char c语言所记录为ASCII,Java语言所记录为unicode
取值范围为0-65536
1 | char sa ='a'; |
两种赋值方法的结果是相同的
转义字符 //解决‘’‘ 需要现实 ’ 单引号 的问题
转义字符|含义
1 | \‘单引号字符 |
1 | System.out.println("[\\]"); |
3.2.4 布尔类型
boolean
true false
1 | boolean a; |
3.3 运算符
3.3.1 赋值运算符
量 = 值
量被写,
值被读,可为常量、公式
·int i=1,j=2,k=3;
定义整型变量i、j、k
·final int val=5;
定义整型常量val
·i=6;
变量=常数
·k=i+i;
变量=表达式
·a=b=c=5;
变量=变量=变量=常量
3.3.2 算术运算符
运算符说明实例结果
1 | +加12.45f+15 27.45 |
1 | (+)一元正号 + 100 (-)一元负号 - 100 |
1 | (*)乘法运算符(/)除法运算符 |
1 | package com.new20221009; |
字面量(literal):表达的信息如字面所示,再通俗点就是表达的信息就是它自己。 常量和字面量之间几乎没有区别,用良好的定义规范来命名常量可以起到替代字面量
3.3.3 自增和自减运算符
自增运算符|自减运算符
前置形式++a –a
后置形式〉a++ a–
计算的结果a+1|a-1
是单目运算符,不能++(a+b)
前置与后置的区别
1 | int a=1,b=1; |
1
2
2
2
3.3.4 关系运算符
1 | 运算符说明实例结果 |
1 | int c=20,d=21,e=22; |
3.3.5 短路运算符
1 | 运算符含义举例结果 |
逻辑与,只要有false,就是false
逻辑或,只要有true,就是true
3.3.6 位运算符
1 | 位逻辑运算符 |
位逻辑运算符
位移运算符
右移1位与右移2位(0.5倍关系),右移符号不变
1 | package com.new20221009; |
3.3.7 三元运算法
int f=1;
int g=f<3?2:3;
System.out.println(g);
System.out.println(f<3?2:3);
f<3 为true 返回2
f<3 为false 返回3
3.3.8 运算符的优先级列表
3.5 数据的类型转换
小物进大物 两种方式
大物进小物 只有一种 还可能溢出
低精度向高精度转换 char与int互相兼容
将int类型的a转换为byte类型
显示转换(强制转换),高精度转换为底精度,不仅适用于基本类型,还适用于引用类型
显示转换导致精度损失
1 | float f =(float)3.1415926 |
3.6.1 代码的注释
注释就是对代码的解释和说明。
注释范围内的任何内容都不会被计算机编译执行
输入代码必须使用半角+英文
1 | // 文档注释 |
在类下的jiava文件右击export,java,javadoc,选择默认的包和输出路径,finish.
打开路径中的index就可以发现api样的文档.
4 语法
4.2.1 if语句
决策分支:拿主意,做选择。
1 | if语句 |
一分支语句
1 | if(布尔表达式){ |
1 | 自动补全 alt + / |
1 | package com.new20221009; |
二分支语句
1 | int balance=500; |
1 | else 会匹配离他最近的if语句 |
多分支语句
1 | if(balance2>=500){ |
1 | boolean flag=false;if(flag=true){//错误bug |
4.2.2 switch 多分支语句
1 | int grade=10; |
4.3.1 while循环语句
1 | 1+2+3+……+100= |
1到100累加
1 | i=1; |
4.4.3 do……while循环语句
1 | int a1=0,a2=0; |
do while更容易实现两次密码的校验
1 | package com.new20221009; |
4.3.3 for循环语句
1 | int sum2=0; |
1 | int arr[]={7,10,56,75,68}; |
1 | int cock,hen,chick; |
4.4 循环控制
1 | int i4=1; |
1 | for(int i5=0;i5<3;i5++){ |
1 | for(int s=1;s<=10;s++){ |
5.1 String类
Char只能保存一个字符
只要有+,就会拼接
如”abc”+true abctrue
“abc”+123 abc123
1 | package com.new20221009; |
main alt +/ 自动补全
1 | char[] charArray= {'t','i','m','e'}; |
1 | char[] charArray2= {'時','間','就','是','金','錢'}; |
4是從第五位開始
1 | byte[] byteArray= {-60,-6,-70,-61}; |
顯示金錢
5.6 正则表达式
DAY 02 JAVA基础概念
键盘录入
int a = 123;
三元运算符
快捷键
ctrl+alt+l 自动化格式 对齐代码
()的运算优先级优于其他所有,凡是需要给定顺序,必要用()
Day 03 判断和循环
Eclipse 快捷键
HQ 标压
U:低压,
Y:超低压,
摩尔定律(英特尔创始人之一戈登·摩尔): 集成电路上可以容纳的晶体管数目在大约每经过18个月到24个月便会增加一倍。换言之,处理器的性能大约每两年翻一倍,同时价格下降为之前的一半
反摩尔定律(Google的前CEO埃里克·施密特):如果你反过来看摩尔定律,一个IT公司如果今天和18个月前卖掉同样多的、同样的产品,它的营业额就要降一半。IT界把它称为反摩尔定律。
安迪-比尔定理 (Andy and Bill’s Law)是对IT产业中软件和硬件升级换代关系的一个概括。原话是 “Andy gives, Bill takes away.(安迪提供什么,比尔拿走什么。)” 安迪指英特尔前CEO安迪·格鲁夫,比尔指微软前任CEO比尔·盖茨,这句话的意思是,硬件提高的性能,很快被软件消耗掉了。
8 bit =1 byte
学习须知
建立学习目录
软件目录
电子笔记
不记详细笔记,要记概要笔记
软件
系统软件
应用软件
软件开发
图形化界面(GUI)
命令行方式(CLI)
程序=算法+数据结构
DOS命令
写入文字至doc
删除文件(通配符)
rm删除目录必须保证目录非空
rm -f/*为强制删除
del文件夹,会删除文件夹下所有文件
计算机语言历史
凡是和操作系统交互的都用C和C++(开发底层,面向过程)
开发效率:C/C++<java<Python
JAVA优点
可以与互联网用户交互
Java应用
与C的区别
运行机制与特性
一次编译,到处运行
JDK/JRE/JVM
安装
在系统变量和用户变量里设置是一样的
第一个Java程序(必须用ANSI编码)
字节码文件名对应类名
代码编辑记事本
EditPlus
NotePad++
注释(comment)
单行注释;
//单行注释:如下的main方法是程序的入口!
多行注释;
/*多行注释:
如下的main方法是程序的入口!
main的格式是固定的!
*/
1 | /* |
文档注释;
1 | /** |
1 | /** |
中文乱码问题:
方案一(实测可用):用Editplus或Notepad++打开文件,将编码方式改为ANSI
方案二(实测不可用):乱码的同学在dos指令的最后加上javadoc -d myHello -author -version HelloWorld.java -encoding utf-8 -charset utf-8
多行注释不可嵌套使用
生成注释文件
1 | javadoc -d myHello -author -version HelloWorld.java |
API文档(字典)
1 |
|
常用的Java开发工具
文本编辑工具
集成开发环境
考试一
①
Java运行环境(Java Runtime Environment,简称JRE
(JVM+Java系统类库)
JVM ,Java虚拟机
JDK = JRE + Java的开发工具(javac.exe,java.exe,javadoc,exe)
JRE = JVM + Java核心类库
②
定义JAVA_HOME变量,JAVA_HOME为bin的上一层目录
path变量内写%JAVA_HOME%\bin
③
rd 删除文件夹
md
cd
cd\
dir
del
④
创建 ChairMan.java
1 | public class ChairMan{ |
编译
1 | javac ChairMan.java |
运行
1 | java ChairMan |
生成注释文档
1 | javadoc -d chairMan -author -version ChairMan.java |
关键字
byte 拜特
bit比特
SQL 涩尔扣
Oracle 奥瑞扣
ASCII > Unicode > utf-8
java编译使用GBk编译(调整为ANSI即可)
String类型变量为引用类型,声明时使用一对“”
String可以和八种基本数据类型进行运算,前后有一个为String,即为连接符(仅连接后的一个变量)
char中不能为空,可为空格
String中可为空
char = ‘’ X
char = ‘ ’ 对
A=65, a=97
char和char相加为int
String转int
进制与进制间转换
int num1 =0b0101 5
int num1 = 0107
int num1 =0x010A
二进制转换为十进制
十进制转换为二进制
二进制转换为八进制或十六进制
三位一看,四位一看
八进制或十六进制转换为二进制
1.标识符的命名规则有哪些?
数字0-9,字母,$, _,
开头不能为数字
严格区分大小写
2.标识符的命名规范有哪些?
包 全小写 book
类,class,接口,interface 大驼峰法 StudentName
变量,方法 小驼峰法 railRoad
常数 全大写 CAR_ID_PRINCE
3.Java 变量按照数据类型怎么划分?并指出Java的基本数据类型有哪8种,并指出各自占用的内存空间大小
内存大小
byte 1byte -128-127
short 2byte
int 4byte
long 8byte
float
double
char
boolean
引用类型
类class—-字符串String
数组
接口
4.说明基本数据类型变量之间自动类型提升的运算规则。
char、byte、short—>int—>long—>float—>double
5.说明基本数据类型变量之间强制类型转换的使用规则和强转可能出现的问题。
int a =12
byte b=(byte)a+(byte)2
容量大—容量小,要用强转符()
精度丢失
开发中推荐使用双与与双或
O(1)级别
程序流程控制
\1. “&”和“&&”的异同
2.程序输出
1 | class OperatorTest { |
结果为:44
++a, 先运算后比较(比较)
a++,先比较(比较)后运算
\3. 定义三个int型变量并赋值,使用三元运算符或者if-else获取这三个数中的较大数的实现
int num1 = 10,num2 = 21,num3 = -21;
int max;
if(num1 >= num2 && num1 >= num3){
max = num1;
}else if(num2 >= num1 && num2 >= num3){
max = num2;
}else{
max = num3;
}
System.out.println(“三个数中的最大值为:” + max);
\4. 编写程序,声明2个double型变量并赋值。判断第一个数大于10.0,且第2个数小于20.0,打印两数之和。否则,打印两数的乘积。
double d1 = 12.3;
double d2 = 32.1;
if(d1 > 10 && d2 < 20){
}else{
}
\5. 交换两个变量值的代码的实现
String s1 = “北京”;
String s2 = “南京”;
String temp = s1;
s1 = s2;
s2 = temp;
break在switch-case中的应用-去冗余
Day04 每日一练
1.switch后面使用的表达式可以是哪些数据类型的。
byte 、 short 、char 、int 、枚举类型变量、String类型。
使用switch语句改写下列if语句:
int a = 3;
int x = 100;
if(a==1)
x+=5;
else if(a==2)
x+=10;
else if(a==3)
x+=16;
else
x+=34;
int a = 3;
int x = 100;
switch(a){
case 1:
x+=5;
break;
case 2:
x+=10;
break;
case 3:
x+=16;
break;
default:
x+=34;
//break;
}
- 谈谈你对三元运算符、if-else和switch-case结构使用场景的理解
int c;
if(a != b){
c = a;
}else{
c = b;
}
int c = (a != b)? a : b;
int c = a;
如何从控制台获取String和int型的变量,并输出?使用代码实现
1.import java.util.Scanner;Scanner scan = new Scanner(System.in);
String info = scan.next();
int id = scan.nextInt();使用for循环遍历100以内的奇数,并计算所有的奇数的和并输出。
int sum = 0;
for(int i = 1;i <= 100;i++){
if(i % 2 != 0){
Sysout(i);
sum += i;
}
}
syout(sum);