一、jdk的安装与配置
1、安装建议C盘
2、配置环境变量
如果去企业,使用idea,其实不用配置。
配置环境变量的意思:就是黑窗口不管在哪个路径下,输入java、javac这些命令都识别。
找到我们的jdk安装路径复制:
C:\Program Files\Java\jdk1.8.0_144
系统变量中,先声明一个变量
配置path路径
%JAVA_HOME%\bin;
一般在黑窗口中输入一个命令,这个时候系统会从path路径下从上往下查找,找到之后立即执行。
二、idea的安装
idea属于IDE工具.
java 的IDE工具 eclipse、myeclipse、idea、netbeas
idea的破解教程:
第一步需要注册idea账户,登录进去。
然后在打开的文件中,添加一句话:
-javaagent:E:\ja-netfilter-v2.2.2\ja-netfilter.jar
当然前提条件是,需要将这个破解包解压到一个非中文路径下,然后复制路径添加到上面即可。
重启idea.
三、idea的基本使用
1、创建项目,并绑定jdk
2、编写代码的规定
项目名一般首字母大写Day01
先有包package,再写类,包名:一般都是公司的网址倒着写。
www.baidu.com com.baidu.xxxxx
包名都是小写的。
类的名字Class才用首字母大写的驼峰命名。张三 zhangSan.
3、一些快捷方式
4、设置
1)设置类上的注释模板
/**
* @Author ${USER}
* @Description TODO
* @Date ${DATE} ${TIME}
* @Version 1.0
*/
四、java基础
1、标识符:作用就是起名字。
1. 由字符(含英、中、日、俄等)、数字、下划线(_)和美元符号($ 音:dollar)组成。
2. 不能以数字作为开头。
3. 区分大小写。
4. 长度无限制。(一般不要超过15个字符)
5. 不能与系统关键字或者保留字重名。
2、变量、常量、局部变量
在项目中,一般常量比较多,单独创建一个类存储常量。
全局变量有默认值,所以不用初始化也不报错,局部变量必须给定初始值。
byte,short,int,long 默认值都是0.
boolean 默认是false
char 类型默认值是null
String 默认值是null.
double,float 默认值是0.0
double 一般不加d,float 一般都会加上f.
3、数据类型
八大基本数据类型需要掌握,String是一个类,只要是类就是引用数据类型,跟你定义Student 类差不多。
byte 占用一个字节,是8位bit。
十进制的8 对应的二进制的 00001000
8 一直除以2 ,直到商为0为止,将每一个的余数从下往上拼接即可。
byte取值范围 256个数字 -128到 127 ,-128二进制 记住:10000000
需要记住的点:8大基本数据类型,以及长度。
4、字符集
常用的字符集就是utf-8 ,偶尔也用gbk
任何乱码问题归根结底都是字符集不照应的问题。
为了满足各国的需求,出现了很多的字符集
中国的 GBK GB2312
美国的 ASCII--已经变成了国际标准 1个字节
欧洲的 ISO8859-1
日本的 UTF系统,常用的UTF-8(支持的整体语言非常好,所以慢慢的大家都在用)
Unicode 世界统一编码,内部编码,java默认使用的编码. 内部字符---2个字节
A 与 a 之间相差32 ,大小写转换可以通过+- 32 来完成。
5、转义字符
char c3 = '\n'; // 换行符<br /> char c4 = '\r'; // 回车符<br /> char c5 = '\t'; // 制表符 指键盘中的tab 键
6、运算符
练习:在控制台输入一个三位数的数字,取出各个位上的数字
// 在控制台输入一个三位数的数字,取出各个位上的数字
public static void main(String[] args) {
// 在类后面,输入.var 敲击回车,自动生成该类的变量
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个三位数:");
int num = scanner.nextInt();
int ge = num % 10; // 103 => 3
int shi = num / 10 % 10; // 103 => 10 => 0
int bai = num / 100; // 1
System.out.println("个位数是:"+ge + ",十位数是:" + shi +",百位数是:"+ bai);
// 整数除以整数,结果还是整数
System.out.println(12/10);
}
练习:获取三个成绩,求成绩之和和平均成绩
Scanner scanner = new Scanner(System.in);
System.out.println("请输入java成绩"); // .sout 敲回车就是输出某个内容
int javaScore = scanner.nextInt();
System.out.println("请输入SQL成绩"); // .sout 敲回车就是输出某个内容
int sqlScore = scanner.nextInt();
System.out.println("请输入linux成绩"); // .sout 敲回车就是输出某个内容
int linuxScore = scanner.nextInt();
// Math.abs 求某个数的绝对值
System.out.println("sql 和 java 差 "+( Math.abs(sqlScore-javaScore)));
System.out.println("三科成绩的平均值:"+ (javaScore+sqlScore+linuxScore)/3.0f);
int类型除以int类型,等于int类型。
String 类型 + 任意类型 都是 String类型。
int类型和浮点型(带小数点的类型)进行相处运算,都是浮点型。
补充一下:Scanner的用法-从控制台获取数据赋值给变量。
如果是整数类型 nextInt() 方法获取
如果是字符串类型 next() 获取一个字符串
如果获取一行数据 nextLine() 获取一行数据
Scanner scanner = new Scanner(System.in);
System.out.println("请输入几个字符串,以空格隔开:");
// ctrl + d 可以快速复制一行
System.out.println("控制台获取的第一个字符串是:"+scanner.next());
System.out.println("控制台获取的第二个字符串是:"+scanner.next());
System.out.println("控制台获取的第三个字符串是:"+scanner.next());
// 从控制台获取数据
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一段文字:");
System.out.println("获取一行数据"+scanner.nextLine());
通过亦或运算交换两个数值:
int a = 3, b = 5;
/* int c = a;
a = b;
b = c;*/
/** 相同为假, 不同为真
* a = 0011
* b = 0101
* a = 0110
* b = 0011 = 3
* a = 0101 = 5
*/
a = a ^ b;
b = a ^ b;
a = a ^ b;
System.out.println("a="+ a + ",b =" + b);
System.out.println(8 >> 1);
// 三目运算 其实 就是if else 的 语法糖
// 前面是条件,条件成立,运行冒号前面的,不成立,执行冒号后面的。
System.out.println("a是否大于b呢?"+ (a>b ? "是的" : "否" ));
&、| 与 && || 的区别
int a = 3, b = 5;
if(a>4 & b++ < 4){
//if(a>4 && b++ < 4){
System.out.println("进入了if");
}else{
System.out.println("没有进入if");
}
System.out.println("b="+b); // 6
7、流程控制(if -else )
if语句有四种使用形式:
- if(条件){…}
- if(条件){…}else{…}
- if(条件){…}else if(条件){…}else{…}
- if(条件){ if(条件){...} } else {...}
if-else 案例
int score = 59;
if(score >= 60){
System.out.println("及格了,恭喜");
}else{
if(score >= 55){
System.out.println("得罪老师了,需要深夜送礼......");
//return; // 此处也可以,只是有点怪。
}else {
System.out.println("不及格,下次补考");
}
}
switch: 可以通过if-else替换掉。
一定要记得添加break,否则出现case穿透问题。
Scanner scanner = new Scanner(System.in);
System.out.println("请选择您想减肥的季节:");
String season = scanner.next();
switch (season) {
case "春" :
System.out.println("春天有点困,先不减了");
break;
case "夏" :
System.out.println("夏天不太适合,夜跑有烧烤...");
break;
case "秋" :
System.out.println("秋天有点伐木累");
break;
case "冬":
System.out.println("你没听说过冬眠吗?");
break;
default:
System.out.println("减肥......");
}
案例:求每一年的各个月份的天数:
package com.qfedu.day01;
import java.util.Scanner;
/**
* @Author laoyan
* @Description TODO
* @Date 2022/3/1 17:21
* @Version 1.0
*/
public class Demo13 {
public static void main(String[] args) {
/**
* 1、从控制台获取月份
* 2、编写一个switch 语法
* 3、判断二月是否是闰年
* 4、打印月份
*/
Scanner scanner = new Scanner(System.in);
System.out.println("输入需要查阅天数的年份:");
int year = scanner.nextInt();
System.out.println("输入需要查阅天数的月份:");
int month = scanner.nextInt();
// 1 3 5 7 8 10 12 31
// 4,6,9,11 30
// 2 28 or 29
switch (month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println("31天");
break;
case 4:
case 6:
case 9:
case 11:
System.out.println("30天");
break;
case 2:
// 闰年 能被4整除 不能被100 整除 或者能被400整除的年称之为闰年
if((year%4==0 && year %100 !=0) || year%400==0 ){
System.out.println("此年为闰年,2月是29天");
}else{
System.out.println("今年二月是28天");
}
}
}
}