java基础篇1
苟有恒,何必三更眠五更起;
最无益,莫过一日曝十日寒。
1、JAVA
java分为 javase(学习主要是为了以后学习大数据的时候后面的很多框架是由java开发的)
javame(已经淘汰)
javaee(web开发:网站+后台)
java现在属于orac公司
java 的结构
java语言的强大之处就是只需要编译一次就可以在各个平台上运行。但是jvm是不能跨平台的
开发java程序需要三个步骤:编写代码,编译代码,运行代码
大白话: 自己在txt文本中写.java文件----然后在cmd中(javac 类名.java)进行编译----(编译成.class文件)-----最后展示在cmd中
.java 文件属于【源文件】,是无法被JVM所识别执行的(利用jdk翻译编码)编译之后再jvm中运行
JRE、JDK1、JVM 的关系
JRE : JRE是 Java Runtime Environment 缩写,指Java运行环境,包含 JVM 虚拟机及 Java 核心类库。
类 :java 文件在代码中的集合体现
核心类库:存放多个 java 文件的仓库
重点理解:我们自己在编写代码的过程中,需要用到 java 已经写好的这些 java 文件。
JRE、JDK、JVM 的作用
1、编写代码的过程中,需要使用 JRE 中 Java 已经写好的代码。
2、编译代码的过程中,需要使用 JDK 中的翻译工具。
3、运行代码的过程中,需要使用 JDK 中的运行工具。
4、代码需要运行在 JVM 当中。
2、配置环境变量
www.oracle.com www.oracle.cn可以直接在网上下载jdk(放在盘中的java目录下)
本人是用的1.6 贴上本人的jdk和jre
在我的电脑–系统属性-高级–环境变量(系统变量)中添加
JAVA_HOME 值就是添加上你下载的java的绝对路径
Path %JAVA_HOME%\bin; (这个直接复制就OK,相对路径的bin目录)
CLASSPATH 暂时可以忽略
添加完成之后再按下win+R 运行—输入cmd中 输入java以及javac即可查看是否安装完成
java -version可以查看版本号
关键字
关键字是java赋予了特殊含义的单词
关键字的特点全部小写
public --限定类名与文件名保持一致
class --定义一个类
HelloWorld --类名
main:主方法 --JVM只会调用main方法 我们java程序的入口
System.out.println("HelloWorld"); --输出语句
3、编写HelloWorld案例
创建txt文本 —把文本改成.java后缀,忽略警告.(在文件夹中查看选项中可以打开文件扩展名)
1.编写程序
public class HelloWorld{
public static void main(String[] args){
System.out.println("HelloWorld");
}
}
2.编译程序
按下win+R 运行—输入cmd中 输入
javac HelloWorld.java
3.运行程序
java HelloWorld
输入框即显示
HelloWorld
键盘录入(一个小知识点)
大白话:意思就是可以我们可以输入数据
如何使用
1.导包
import java.util.Scanner;
位置:类的上面
2.创建对象
Scnner sc = new Scanner(System.in);
只有sc可以改变的 但是不建议
3.接收数据
int i = sc.nextInt();
只有 i 变量名是可以修改的
4、注释
单行注释
//注释
多行注释
/* 注释 /
文档注释
/* 注释 */
5.1常量
在代码运行期间 其值不会发生变化的量(数据)
字符串常量
使用双引号引起来的内容 “字符串” “”:空字符串
字符常量
由单引号引起来的单个文字信息 ‘A’ ‘a’ ‘哈’
整数常量
一切整数
小数常量
一切小数
布尔常量
真:true 假:false
空常量
null 不能单独打印
5.2变量
变量的作用 使用变量记录一些经常发生变化的数据
变量是什么 内存中的一小块存储区域 这个区域中的值会经常发生变化:变量
变量的定义格式 数据类型 变量名 = 初始化值;
注意事项:
1.变量名不能重名
2.一行上可以定义多个同类型的变量
3.变量在使用之前 必须要有一个初始化值
4.定义float与long的时候有些要求
float类型的初始化值 需要加 F或者f 建议 F
long类型的初始化值 需要加L或者l 建议是L
5.变量的作用范围
变量所在的这对大括号中
5.3标识符
用来给 变量 方法 类取名字的符号
硬性规定:
1.只能由 数字 英文字母 下划线_ 美元符号 $
2.数字不能开头
3.不能使用关键字
4.区分大小写
方法 变量: (小驼峰)
1.如果是一个单词 首字母小写
2.如果是多个单词 第一个单词的首字母小写 后面的单词 首字母大写
类的命名: (大驼峰)
1.如果是一个单词 首字母是大写
2.如果是多个单词 每隔单词首字母大写
5.4数据转换
数据类型比较多 在使用的过程中肯定会涉及到多个类型进行计算
从左到右依次变大
转换顺序:byte–>(short,char)–>int–>long–>float–>douuble
5.4.1隐式转换
小的->大的
小的与大的进行计算的时候,小的会提升为大的 在参与运算
byte short char 参与运算的时候,会自动转换为int类型
5.4.2强制转换
大的->小的
因为大的到小的有可能会产生 精度损失 所以要进行强制转换
格式
小类型 变量名 = (小类型)大类型
小类型 变量名 = (小类型)(计算结果为大类型)
小数转整数的时候只保留整数(并不会四舍五入)
6算数运算符
小学学的+、-、*、/、%都是算数运算符
特殊:
只有整数参与除法运算只会得到商。
想要输出小数,需要在做除法运算时,有一个数为小数即可。
ASCII码表
需要记住三个 0为48,a为97,A为65
字符也参与运算,由于 byte short char 参与运算的时候 会自动提升为 int类型 ,所以:最终结果会得到一个整数
char再参与运算的时候 会在码表中找到对应的数字 来进行计算
字符串参与加法运算
字符串参与加法运算得到的结果 也是一个字符串,还叫作字符串的拼接
1.从左往右执行,有括号先算括号内
2.根据结果 加号两边只要有字符串 结果就是字符串 例如:“得到的” + 3 + 4 要考虑到 “得到的” + 3结果是一个字符串 所以第二个加号两边存在字符串
7.1关系运算符
关系表达式结果是boolean类型 true false
== > >= < <= !=
7.2逻辑运算符
连接 关系表达式的 而关系表达式的结果是boolean类型
& 有false则false
| 有true则true
! 取反 双层否定是肯定
^ 相同fasle 不同true
7.3三元运算符
格式
关系表达式 ? 表达式1:表达式2
eg:int num = a> b? a:b;
执行流程
1.先执行关系表达式
2.如果关系表达式为true 则执行表达式1
3.如果关系表达式为fasle 则执行表达式2
可以使用三云运算符 求最大最小值
7.4分支结构
顺序结构:
从上往下 从左往右的一种默认的执行顺序
分支结构:
if switch for while
7.4.1if循环
if格式一
if(判断条件){
语句体;
}
当判断条件为true的时候会执行语句体。
if格式二
if(判断条件){
语句体1;
}else{
语句体2;
}
执行流程
1.先执行判断条件
2.如果结果是true 执行语句体1 if语句执行结束 再执行其他语句
3.如果结果是false 执行语句体2 if语句执行结束 再执行其他语句
if格式三
if(判断条件1){
语句体1;
}else if (判断条件2){
语句体2;
}
...
else{
语句体n+1;
}
执行流程
1.先执行判断条件1
2.如果判断条件1位true 执行语句体1 if语句执行结束 再执行其他语句
3.如果判断条件1位false 执行判断条件2
4.如果判断条件2为true 执行语句体2 if语句执行结束 再执行其他语句
5.如果判断条件2位false 执行判断条件n 下面以此类推
6.最后:如果以上所有的条件全部为false的话 执行语句体n+1
if判断语句例子
需求
提示用户键盘录入一个数据并接收.
判断该数据是奇数还是偶数, 并将结果打印到控制台上.
参考代码
public class IfDemo01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请录入一个整数: ");
int num = sc.nextInt();
if (num % 2 == 0) {
System.out.println(num + "是偶数");
}else {
System.out.println(num + "是奇数");
}
}
}
需求
小明快要期末考试了,小明爸爸对他说,会根据他的考试成绩,送他不同的礼物.
假如你可以控制小明的得分,请用程序实现小明到底该获得什么样的礼物,并在控制台输出。
礼物标准如下:
– 95~100 山地自行车一辆
– 90~94 游乐场玩一次
– 80~89 变形金刚玩具一个
– 80以下 胖揍一顿
参考代码
import java.util.Scanner;
public class IfDemo02 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请录入小明的考试成绩: ");
int score = sc.nextInt();
if (score >= 95 && score <= 100) {
System.out.println("奖励小明: 山地自行车一辆");
} else if(score >= 90 && score < 95) {
System.out.println("奖励小明: 游乐场玩儿一次");
} else if(score >= 80 && score < 90) {
System.out.println("奖励小明: 变形金刚玩具一个");
} else if(score >= 0 && score < 80){
System.out.println("奖励小明: 男女双混组合拳 + 扫帚棒法");
} else {
System.out.println("考试成绩录入有误.");
}
}
}
7.4.2 switch判断语句
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
case 值3:
语句体3;
break;
... //根据需求, 可以写多组case.
default:
语句体n;
break;
}
5.4、执行流程
1、先计算表达式的值, 然后按照从上往下的顺序依次和每一个case对应的值相匹配
2、如果能匹配成功, 则执行该case对应的语句体, 然后执行break, 至此, 整个switch语句结束
3、如果和所有的case值都不匹配, 则执行default对应的语句体, 然后执行break, 至此, 整个switch语句结束
解释: default语句就类似于if. else语句中的else, 当所有条件都不满足时才会执行
每个case都是平等的 只不过是按照顺序执行
利用switch输出每年的月份对应的季节:
import java.util.Scanner;
public class SwitchDemo01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请录入一个月份: ");
int month = sc.nextInt();
switch (month) {
case 12:
System.out.println("冬季");
break;
case 1:
System.out.println("冬季");
break;
case 2:
System.out.println("冬季");
break;
case 3:
System.out.println("春季");
break;
case 4:
System.out.println("春季");
break;
case 5:
System.out.println("春季");
break;
case 6:
System.out.println("夏季");
break;
case 7:
System.out.println("夏季");
break;
case 8:
System.out.println("夏季");
break;
case 9:
System.out.println("秋季");
break;
case 10:
System.out.println("秋季");
break;
case 11:
System.out.println("秋季");
break;
default:
System.out.println("没有这样的日期");
break;
}
}
}
case穿透:
当case之后没有break的时候,会向下直接执行,直到碰到下一个break,会跳出循环(前提是case对应的值和switch相等);
上面的例子优化为:
import java.util.Scanner;
public class SwitchDemo02 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请录入一个月份: ");
int month = sc.nextInt();
switch (month) {
case 12:
case 1:
case 2:
System.out.println("冬季");
break;
case 3:
case 4:
case 5:
System.out.println("春季");
break;
case 6:
case 7:
case 8:
System.out.println("夏季");
break;
case 9:
case 10:
case 11:
System.out.println("秋季");
break;
default:
System.out.println("没有这样的日期");
break;
}
}
}
如此一来,当执行case12的时候,会在12之后穿透到break之前执行语句,如果case之间有值,会一并执行
例如
case 1:
System.out.println("冬季1");
case 2:
System.out.println("冬季2");
break;
这样会执行两个语句 冬季1和冬季2都会输出
如果直接执行case2 只会输出冬季2;
各个情况自行测试
下一篇终于开始进入正题啦 一些基础以及逻辑难点