java学习(更新中)
java入门
一、Java技术体系
三种技术平台:
java SE:标准版-java的核心和基础
java EE: 企业版-企业级应用开发的一套解决方案
java ME:小型版-针对移动设备应用的解决方案(一般不用,Android和ios)
java基本上什么都可以干,主要做互联网系统的开发
二、搭建java开发环境
java的产品叫jdk:java development kit:java开发者工具包,必须安装JDK才能使用java
企业开发一般用jdk8,学习可以用jdk17,二者可以转换
三、命令行窗口的常用命令
切换到某个盘下:D:,C:
查看当前目录下的文件信息: dir
进入到某个路径: cd 返回到上一级:cd … ; 回退到盘根:cd \
清屏:cls
四、helloworld
java程序开发的三个步骤:编写代码、javac编译代码(源代码文件->字节码文件)、运行代码
java建议代码文件名全英文,首字母大写,满足驼峰模式,源代码文件的后缀必须是.java
五、JDK的组成
JVM(java virtual machine)java虚拟机,真正运行Java程序的地方
核心类库:Java自己写好的程序,给程序员自己的程序调用的
JRE:Java的运行环境,它包含JVM和核心类库
JDK:Java开发工具包(javac、java。。。)
Java程序一次编译,处处可用:只要操作系统上安装了JVM虚拟机,就可以使用
六、PATH环境变量
PATH环境变量用于记住程序路径,方便在命令行窗口的任意目录启动程序
老版本的JDK安装时没有自动配置环境变量
JAVA_HOME环境变量:告诉操作系统JDK安装在了哪个位置(将来其他技术要通过这个环境变量找JDK)
IDE(集成开发环境):把代码的编写,编译,执行等多种功能结合到一起的开发工具
七、IDEA管理Java程序的结构
project(项目、工程)
module(模块)
package(包)
class(类)
八、使用idea开发第一个Java程序的步骤
1、创建工程new project
2、创建模块new module
3、创建包new package
为包取名字,域名倒写
4、创建类new class(类名不要带后缀)
5、编写代码,并启动
question:idea中java程序是自动编译和执行的,那编译后的class文件在哪里?
ctrl+alt+i 格式化
ctrl+x 删除行
九、基础语法
1、注释
/*
多行注释
床前明月光
疑是地上霜
*/
//单行注释;这是一个打印语句,是往控制台输出内容的
/**
文档注释
文档注释的内容可以自动提取到程序说明书
目标:学会使用注释
这个程序就是讲解注释的
*/
注释并不影响程序的执行
原因:javac编译后的class文件没有注释
注释快捷键:
ctrl+/ 单行注释
ctrl+shift+/ 对选中的代码多行注释
2、字面量
字面量是编程语言中用于表示固定值的直接表示法。
特殊字符:\n表示换行 \t表示tab
3、变量
变量是用来记住程序要处理的数据的
变量格式:数据类型 变量名称 = 数据
变量就是内存中的一块区域,可以理解成一个盒子,用来装一个数据的,变量中装的数据是可以被替换的
使用变量的注意事项:
a 变量要先声明才可以使用
b 变量是什么类型,就应该用什么类型的数据,否则会报错
c 变量是从定义开始到}截止的范围内有效,同一个范围内,定义的多个变量,它们的名称不能一样
d 变量定义的时候可以不赋初始值,但在使用时,变量里必须有值,否则报错
4、关键字、标识符
关键字:java语言自己用到的一些词,有特殊作用的,我们称之为关键字,如public、class、int、double。。。
标识符:标识符就是名字,我们写程序时会起一些名字,如类名、变量名等等都是标识符
尽量满足“驼峰模式”
java语法
一、数据存储方式
计算机中表示数据的最小单元:一个字节
Text、Image、Sound存储方式:
char ch=‘a’;
//字符转换为ASCII码存储
Image:三原色,0-255存储
Sound:二进制组成波形图
二、数据类型
数据类型分类:基本数据类型、引用数据类型
基本数据类型(如int、float等)直接存储值本身,而引用数据类型(如类、接口、数组等)存储的是对象的内存地址。基本数据类型的变量在栈上分配内存,而引用数据类型的变量在栈上分配引用(指针),对象的具体信息存储在堆内存上。
char字符型 ‘单引号一个字符’
string字符串型 “双引号多个字符” (它是引用数据类型)
注意:随便写一个整型字面量默认是int类型的。如果希望随便写一个整型字面量默认是long类型的,需要在数值后面加上l/L
随便写小数字面量,默认是double,如果希望小数是float,后面加上f/F
三、类型转换
为什么要进行类型转换?
存在不同类型的变量赋值给其它类型的变量
1、自动类型转换
类型范围小的变量,可以直接赋值给类型范围大的变量
eg:byte->int
2、表达式的自动类型转换
在表达式中,小范围类型的变量,会自动转换程表达式中较大范围的类型,再参与运算
byte、short、char ——》 int ——》long ——》float ——》double
注意事项:表达式的最终结果类型是由表达式中的最高类型决定的
在表达式中,byte、short、char是直接转换成int类型参与运算的
3、强制类型转换
类型范围大的数据或变量直接赋值给小范围的类型或变量,会报错
强制类型转换是强行将类型范围大的变量、数据赋值给类型范围小的变量
数据类型 变量2 = (数据类型)变量1、数据
eg:
int a = 20;
byte b = (byte)a;
快捷键:alt + 回车
浮点型转换成整型是丢弃小数部分,保留整数部分
四、运算符
1、算术运算符
+ - * / %
注意: 1、在Java中两个整数相除还是整数
可以把整数改成x.0
或者给变量乘以1.0
eg:int i=5;
int j = 2;
System.out.println(1.0 * i / j); //2.5
2、+号可以作为字符串的连接符
“abc” + 5 —> “abc5”
2、自增自减运算符
++ – 放在某个变量的前面或后面,对该变量的值+/-1
注意:++ – 如果不是单独使用(如在表达式中、或者同时有其他操作)放在变量前后会有明显区别。
放在变量的前面,先对变量进行+1、-1,再拿变量的值进行运算 (先加再用)
放在变量的后面,先拿变量的值进行运算,再对变量的值进行+1、-1 (先用在加)
3、赋值运算符
基本赋值运算符: = 右边赋值给左边
扩展赋值运算符: += -= *= /= %=
扩展的赋值运算符隐含了强制类型转换,强行转换成左边变量的类型。
int e = 10;
double f = 11.0;
e += f;
System.out.println("e=:" + e);
double变为int
4、关系运算符
5、逻辑运算符
把多个条件放在一起运算,最终返回布尔类型的值:true、false
&逻辑与 多个条件必须都是true,结果才是true
|逻辑或 多个条件中只要有一个是true,结果就是true
!逻辑非 就是取反
^ 逻辑异或 前后条件的结果相同,直接返回false;不同返回true(同假异真)
&& 短路与(双与) 左边为false,右边不执行
|| 短路或(双或) 左边为true,右边不执行
6、三元运算符、运算符优先级
三元运算符格式: 条件表达式 **?**值1 **:**值2
执行流程:先计算关系表达式的值,如果值为True,返回值1,如果为false,返回值2
需求1:根据条件输出不同结果
需求2:找出两个数中的较大值
需求3:找三个整数中的较大值
在表达式中,运算符执行的先后顺序是要看优先级的,例如*/的优先级高于±
7、案例知识:在程序中接收用户通过键盘输入的数据
API(Application Programming Interface:应用程序编程接口):JDK安装好后,就已经提供了很多java写好的程序给我们程序员来使用,这些程序统称为API
java为自己写好的程序提供了相应的 程序使用说明书(API文档)
Scanner:
使用scanner接收用户键盘输入的数据,需要三个步骤:
1、导包:告诉程序去JDK的哪个包中找扫描器技术
2、抄代码:代表得到键盘扫描器对象(东西)
3、开始调用sc的功能,来接收用户键盘输入的数据
注意:System、String在JDK中的Java.long包下
lang包不需要我们导包,是默认的包
导包:一般不需要我们自己做,idea工具会自动帮助我们导包
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) {
// 1、导包:告诉程序去JDK的哪个包中找扫描器技术
// 2、抄代码:代表得到键盘扫描器对象(东西)
Scanner sc = new Scanner(System.in);
// 3、开始调用sc的功能,来接收用户键盘输入的数据
System.out.println("请输入您的年龄:");
int age = sc.nextInt();//执行到这,会开始等待用户输入一个整数,直到用户输入回车键才拿到数据
System.out.println("您的年龄是:" + age);
System.out.println("请输入您的姓名:");
String name = sc.next();
System.out.println("您的姓名是:"+ name);
}
}
Scanner sc = new Scanner(System.in);
// 3、开始调用sc的功能,来接收用户键盘输入的数据
System.out.println("请输入您的年龄:");
int age = sc.nextInt();//执行到这,会开始等待用户输入一个整数,直到用户输入回车键才拿到数据
System.out.println("您的年龄是:" + age);
System.out.println("请输入您的姓名:");
String name = sc.next();
System.out.println("您的姓名是:"+ name);
}
}