一、
1.jdk是什么?有哪些内容组成?
jdk是java开发工具包
- jvm虚拟机:java程序运行的地方
- 核心类库:java已经写好的东西,可以直接用
- 开发工具:javac、java、jdb、jhat...
2.jre是什么?有哪些内容组成?
- jre是java运行环境
- jvm、核心类库、运行工具
3.jdk、jre、jvm三者的包含关系
- jdk包含了jre
- jre包含了jvm
二、
标识符——命名规则——硬性建议
- 由字母、数字、下划线和美元符组成
- 不能以数字开头
- 不能是关键字
- 区分大小写
标识符——命名规则——软性建议
小驼峰:方法、变量
1、标识符是一个单词,全部小写
例:name
2、标识符由多个单词组成,第一个单词首字母小写,其他单词首字母大写
例:firstName
大驼峰:类名
1、标识符是一个单词,首字母大写
例:Student
2、标识符由多个单词组成,每个单词首字母大写
例:GoodStudent
三、
键盘录入
步骤1:导包
import java.util.Scanner;
步骤二:创建对象
Scanner sc = new Scanner(System.in);
步骤三:接收数据
int i = sc.nextInt();
四、
idea快捷键
public static void main(String[] args) ————psvm System.out.println("");————sout
项目结构:
project(项目)
module(模块)——project structure——modules——new moudle
package(包)
class(类)
五、
拆分数字公式总结
个位:数值%10
十位:数值/10%10
百位:数值/100%10
千位:数值/1000%10
.......
类型转换分类:
byte<short<int<long<float<double
隐式转换:取值范围小的数值->取值范围大的数值
强制转换:取值范围大的数值->取值范围小的数值
【格式:目标数据类型 变量名 = (目标数据类型)被强转的数据】
范例:double a = 12.3;
int b = (int)a;
六、
自增自减运算符
单独使用:++和--无论放在变量的前边还是后边,单独写一行结果是一样的。
参与计算:
(1)先用后加
int a = 10;
int b = a++;
//b = 10; a = 11
(2)先加后用
int a = 10;
int b = ++a;
//b = 11; a=11
正数的原码、反码和补码都一样。
反码:
计算规则——正数反码不变,负数的反码在原码基础上符号位不变,数值取反,0变1,1变0。
补码:反码加一。
运算符 | 含义 | 运算规则 |
---|---|---|
& | 逻辑与 | 0为false 1为true |
| | 逻辑或 | 0为false 1为true |
<< | 左移 | 向左移动,低位补0 |
>> | 右移 | 向右移动,高位补0或1 |
>>> | 无符号右移 | 向右移动,高位补0 |
判断与循环:
if(关系表达式){
语句体;
}
if(关系表达式){
语句体1;
}else{
语句体2;
}
if(关系表达式1){
语句体1;
}else if(关系表达式2){
语句体2;
}
.......
else{
语句体n+1;
}
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
..........
default:
语句体n+1;
break;
}
for(初始化语句;条件判断语句;条件控制语句){
循环体语句
}
初始化语句;
while(条件判断语句){
循环体语句;
条件控制语句;
}
力扣:
1.回文数
核心思路:把数字倒过来跟原来的数字进行比较
class Solution {
public boolean isPalindrome(int x) {
int temp = x;//例121
int num = 0;
//所有负数都不是回文数
if(x >= 0 ){
while (x != 0){//121、12、1、0
int ge = x % 10;//1、2、1
x = x / 10;//12、1、0
num = num * 10 + ge;//1、12、121
}
return num == temp;//121==121
}else{
return false;
}
}
}
2.求商和余数
int dividend = 100;
int divisor = 10;
int count = 0;
while (dividend >= divisor){
dividend = dividend - divisor;
count++;
}
System.out.println("余数:" + dividend);
System.out.println("商:" + count);
初始化语句;
do{
循环体语句;
条件控制语句;
}while(条件判断语句);
跳转循环:
continue:结束本次循环,继续下次循环;
break:结束整个循环;
for(int i = 1; i <= 5; i++){
if(i == 3){
continue;
//break;
}
System.out.println(i+"吃包子");
}
逢7过:
for (int i = 1; i <= 100; i++){
if ((i % 10) == 7|| i % 7 == 0 || i / 10 % 10 == 7){
System.out.println("数字:" + i + ":过");
continue;
}
System.out.println(i);
}
求平方根:
思路:在代码当中,从1开始循环,用数字的平方与原来的数字进行比较;如果小于那继续往后判断;如果相等,那当前数字就是平方根;如果大于,那前一个数字就是平方根的整数部分。
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
for (int i = 1; i <= x; i++){
int pingfang = i * i;
if (pingfang < x){
continue;
}else if (pingfang == x){
System.out.println(i);
break;
}else{
System.out.println(i-1);
break;
}
}
求质数:
质数:一个整数只能被1和本身整除,否则叫做合数。
boolean lag = true;
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个正整数:");
int number = sc.nextInt();
for (int i = 2; i < number; i++){
if (number % i == 0){
lag = false;
}
}
if (lag){
System.out.println(number + "是质数");
}else{
System.out.println(number + "不是质数");
}
猜数字小游戏:
获取随机数:
1.导包——import java.util.Random;
2.创建对象——Random r = new Random();
3.生成随机数——int number = r.nextInt(随机数的范围);
Random r = new Random();
int number = r.nextInt(100)+1;
Scanner sc = new Scanner(System.in);
while (true){
int guess = sc.nextInt();
if (guess > number){
System.out.println("猜测大了");
continue;
}else if (guess < number){
System.out.println("猜测小了");
continue;
}else{
System.out.println("猜对了");
break;
}
}
七、数组
定义:
格式一:数据类型[] 数组名
格式二:数据类型 数组名[]
静态初始化:
完整格式:数据类型[] 数组名 = new 数据类型[]{元素1, 元素2, ......};
简化格式:数据类型[] 数组名 = {元素1, 元素2, ......};
动态初始化:
数据类型[] 数组名 = new 数据类型[数组长度];
数组的长度属性:
调用方式——数组名.length
八、方法(写在main外面,类里面)
最简单的方法定义:
public static void 方法名(){
方法体(就是打包起来的代码);
}
调用:方法名();
带参数的方法定义:
单个参数:public static void 方法名(参数){..............}
调用:方法名(参数);
多个参数:public static void 方法名(参数1,参数2,参数3............){..............}
调用:方法名(参数1,参数2,参数3............);
形参:方法定义中的参数
实参:方法调用中的参数
带返回值方法的定义:
public static 返回值类型 方法名(){
方法体(就是打包起来的代码);
return 返回值;
}
直接调用:方法名(实参);
赋值调用:整数类型 变量名 = 方法名(实参);
输出调用:System.out.println(方法名(实参));
方法的重载:同一个类中方法名相同,参数不同;与返回值无关。
其中 参数不同:个数不同、类型不同、顺序不同
基本数据类型:整数类型、浮点数类型、布尔类型、字符类型
引用数据类型:除了基本数据类型的其他所有类型
其中,引用数据类型:不管arr1还是arr2,只要对右侧数据进行改变,再次访问就是修改后的结果。因为arr1和arr2使用同一个空间。
对于以上知识点的综合案例
一、
package anli;
import java.util.Scanner;
public class demo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入机票原价:");
int ticket = sc.nextInt();
System.out.println("请输入月份:");
int month = sc.nextInt();
System.out.println("请输入头等舱0或经济舱1:");
int seat = sc.nextInt();
double price = 0;
if (month >= 5 && month <= 10){
if (seat == 0){
price = ticket * 0.9;
}else {
price = ticket * 0.85;
}
} else if ((month >= 11 && month <= 12) || (month >= 1 && month <= 4 )) {
if (seat == 0){
price = ticket * 0.7;
}else {
price = ticket * 0.65;
}
}else{
System.out.println("没有这个月份");
}
System.out.println(price);
}
}
二、简化
package anli;
import java.util.Scanner;
public class demo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入机票原价:");
int ticket = sc.nextInt();
System.out.println("请输入月份:");
int month = sc.nextInt();
System.out.println("请输入头等舱0或经济舱1:");
int seat = sc.nextInt();
int price = 0;
if (month >= 5 && month <= 10){
price = jisuanjiage(ticket,seat,0.9,0.85);
} else if ((month >= 11 && month <= 12) || (month >= 1 && month <= 4 )) {
price = jisuanjiage(ticket,seat,0.7,0.65);
}else{
System.out.println("没有这个月份");
}
System.out.println(price);
}
public static int jisuanjiage(int ticket,int seat,double v0,double v1) {
int price = 0;
if (seat == 0){
price = (int)(ticket * v0);
}else {
price = (int)(ticket * v1);
}
return price;
}
}
package anli;
public class demo2 {
public static void main(String[] args) {
int count = 0;
for (int i = 101; i <= 200; i++){
boolean lag = true;
for (int j = 2; j < i; j++){
if (i % j == 0){
lag = false;
break;
}
}
if (lag){
System.out.println(i);
count++;
}
}
System.out.println("一共" + count + "个素数");
}
}
package anli;
import java.util.Random;
public class demo3 {
public static void main(String[] args) {
Random r = new Random();
char[] arr = new char[52];
for (int i = 0; i < arr.length; i++) {
if (i < 26){
arr[i] = (char)(65 + i);
}else {
arr[i] = (char)(97 + i - 26);
}
System.out.print(arr[i] + " ");
}
System.out.println(" ");
String reasult = "";
for (int i = 0; i < 4; i++){
int randomindex = r.nextInt(arr.length);
reasult = reasult + arr[randomindex];
}
reasult = reasult + r.nextInt(10);
System.out.println(reasult);
}
}
package anli;
public class demo4 {
public static void main(String[] args) {
int[] arr = {1,2,4,5,8,3,7,9,6};
int[] newarr = new int[arr.length];
for (int i = 0; i < arr.length; i++) {
newarr[i] = arr[i];
}
System.out.print("[");
for (int i = 0; i < newarr.length; i++) {
if(i != newarr.length-1){
System.out.print(newarr[i] + ",");
}else {
System.out.print(newarr[i] + "]");
}
}
}
}
package anli;
import java.util.Scanner;
public class demo5 {
public static void main(String[] args) {
int[] scores = getScores();
int max = getMax(scores);
int min = getMin(scores);
int sum1 = getSum1(scores);
int sum = 0;
sum = max + min;
double ave = 0;
ave = (sum1 - sum)/(scores.length-2);
System.out.println(ave);
}
public static int getSum1(int[] scores) {
int sum1 = 0;
for (int i = 0; i < scores.length; i++) {
sum1 = sum1 + scores[i];
}
return sum1;
}
public static int getMin(int[] scores) {
int min = scores[0];
for (int i = 1; i < scores.length; i++){
if (min > scores[i]){
min = scores[i];
}
}
return min;
}
public static int getMax(int[] scores) {
int max = scores[0];
for (int i = 1; i < scores.length; i++){
if (max < scores[i]){
max = scores[i];
}
}
return max;
}
public static int[] getScores() {
Scanner sc = new Scanner(System.in);
int[] scores = new int[6];
for (int i =0; i < scores.length; ){
System.out.println("请输入0-100的整数:");
int score = sc.nextInt();
if (score >=0 && score <= 100){
scores[i] = score;
i++;
}
}
return scores;
}
}
package anli;
public class demo6 {
public static void main(String[] args) {
//1.计算数组长度
int number = 123456;
int count = 0;
int temp = number;
while (number != 0){
number = number / 10;
count++;
}
//2.定义数组
int[] arr = new int[count];
//3.把整数存放到数组里
int index = arr.length -1;
while (temp != 0){
int ge = temp % 10;
temp = temp / 10;
arr[index] = ge;
index--;
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
//4.进行加密
for (int i = 0; i < arr.length; i++) {
arr[i] = (arr[i] + 5) % 10;
System.out.print(arr[i]);
}
System.out.println(" ");
for (int i = 0; i < arr.length / 2; i++){
int temp1 = arr[i];
arr[i] = arr[arr.length-i-1];
arr[arr.length-i-1] = temp1;
}
int number1 = 0;
for (int i = 0; i < arr.length; i++) {
number1 = number1 * 10 + arr[i];
}
System.out.println(number1);
}
}