java_note

第一章 简介开发环境

1.java如何实现跨平台?

Java编译器和Java虚拟机 是实现Java程序可以跨平台运行的重要因素

Java编译器

在源程序编写结束后执行编译命令,会将源代码送到Java编译器中,Java编译器仅仅将源代码编译成.class文件。class文件是Java字节码文件,本质上是一种标准化的可移植的二进制格式。它不面向任何特定的处理器,只面向Java虚拟机。

Java虚拟机

Java虚拟机通过解释器——即时编译器,将Java字节码转换成可以直接发送给处理器指令的程序。

将源代码编译成标准化二进制格式的字节码,这个字节码在所有平台都是一样的。之后基于不同的平台采用不同的即时编译器,将字节码转换成满足不同平台需求的代码程序。

2.了解jdk、jvm、jre区别?
  • JDK开发工具包
    • JRE(运行环境)运行时类库
      • JVM(java虚拟机)
3.掌握java 1.8 LTS开发环境配置
  • 下载安装jdk1.8
  • 配置开发环境(环境变量)
    • JAVA_HOME新建
      C:\program Files\Java\jdk1.8 .0_221
    • ​ CLASSPATH新建 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
    • Path编辑
      .;%JAVA_HOME%\bin
      (简化配置,不推荐—不配置JAVA_HOME CLASSPATH)
4.掌握jdk 17 LTS开发环境配置

a.解压jak-17_windows-x64_bin.zip
b.配置开发环境(环境变量)-同jdk1.8

5.掌握IDEA开发工具使用
Intellij IDEA IDE

第一步:jetbrains.com 官方下载idea 2023.3.2.zip

第二步:3.jetbra.in

第三步:编辑ij/bin/idea64.exe.vmoptions文件,最后添加如下

-javaagent:d:/soft/ij/jetbra/ja-netfilter.jar

第四步:执行ij/jebra/scripts/install-allusers.vbs

第五步:启动ij/bin/idea64.exe

第六步:启动程序选择激活,复制

6G5NXCPJZBeyJsaWNlbnNlSWQiOiI2RzVOWENQSlpCIiwibGljZW5zZWVOYW1lIjoic2lnbnVwIHNjb290ZXIiLCJhc3NpZ25lZU5hbWUiOiIiLCJhc3NpZ25lZUVtYWlsIjoiIiwibGljZW5zZVJlc3RyaWN0aW9uIjoiIiwiY2hlY2tDb25jdXJyZW50VXNlIjpmYWxzZSwicHJvZHVjdHMiOlt7ImNvZGUiOiJQU0kiLCJmYWxsYmFja0RhdGUiOiIyMDI1LTA4LTAxIiwicGFpZFVwVG8iOiIyMDI1LTA4LTAxIiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IlBEQiIsImZhbGxiYWNrRGF0ZSI6IjIwMjUtMDgtMDEiLCJwYWlkVXBUbyI6IjIwMjUtMDgtMDEiLCJleHRlbmRlZCI6dHJ1ZX0seyJjb2RlIjoiSUkiLCJmYWxsYmFja0RhdGUiOiIyMDI1LTA4LTAxIiwicGFpZFVwVG8iOiIyMDI1LTA4LTAxIiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJQUEMiLCJmYWxsYmFja0RhdGUiOiIyMDI1LTA4LTAxIiwicGFpZFVwVG8iOiIyMDI1LTA4LTAxIiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IlBHTyIsImZhbGxiYWNrRGF0ZSI6IjIwMjUtMDgtMDEiLCJwYWlkVXBUbyI6IjIwMjUtMDgtMDEiLCJleHRlbmRlZCI6dHJ1ZX0seyJjb2RlIjoiUFNXIiwiZmFsbGJhY2tEYXRlIjoiMjAyNS0wOC0wMSIsInBhaWRVcFRvIjoiMjAyNS0wOC0wMSIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJQV1MiLCJmYWxsYmFja0RhdGUiOiIyMDI1LTA4LTAxIiwicGFpZFVwVG8iOiIyMDI1LTA4LTAxIiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IlBQUyIsImZhbGxiYWNrRGF0ZSI6IjIwMjUtMDgtMDEiLCJwYWlkVXBUbyI6IjIwMjUtMDgtMDEiLCJleHRlbmRlZCI6dHJ1ZX0seyJjb2RlIjoiUFJCIiwiZmFsbGJhY2tEYXRlIjoiMjAyNS0wOC0wMSIsInBhaWRVcFRvIjoiMjAyNS0wOC0wMSIsImV4dG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

IDEA 安装插件
  1. Chinese
  2. Translation
  3. Atom Material lcons
  4. Cyan Light Theme
  5. Gitee
  6. Grep Console
6.其他
  • 测试java开发环境
C:\Users\ASUS>java
C:\Users\ASUS>java -version
  • HelloWorld.java程序开发编译,并运行测试
    class H{
         public static void main(String...a){
             System.out.println("hello world");
      }
    }
    

    创建记事本notepad,保存H.java

    C:\Users\ASUS>cd desktop
    C:\Users\ASUS\Desktop>cd java
    C:\Users\ASUS\Desktop\java>javac H.java
    C:\Users\ASUS\Desktop\java>java H
    
  • 如果运行有中文乱码

a.记事本另存文件编码格式为ANSI
b.如果使用utf-8,java -Dfile.encoding=utf-8 Demo.java 直接运行解决乱码
c.如果使用utf-8,javac Demo.java -encoding utf-8,再运行 java Demo 就没有乱码

public class Chin_garbledcode {
    public static void main(String[] args){
        System.out.println(System.getProperty("java.version"));
        System.out.println(System.getProperty("java.home"));
        System.out.println(System.getProperty("os.name"));
        System.out.println(System.getProperty("user.home"));
        System.out.println("中文案例");
    }
}
jdk9以后没有jre

如下命令建立jre程序目录

bin\jlink --module-path jmods --add-modules java.desktop,java.base--outputjre

第二章 JAVA基本语法

1、了解java程序类基本结构,和入口方法的位置
Demo.java
class Demo{
      //属性-成员属性,成员变量,声明属性,并初始化
      //方法-public static void main(String...a) java程序类,入口方法,可以直接执行
}

入口方法:方法的参数必须是
String[] args
String…args
(main()入口方法,一个类中只能一个main方法,代表该类可以直接执行)

2、掌握三种注释的写法和javadoc.exe生成api
  • 单行注释
    • //ctrl+/
      
  • 多行注释,块注释
    • /*
      ctrl+shift+/ 
      */
      
  • 文档注释
    • /*头
       *copyright(c) 2006,2023,webrx.cn All rights reserved.
       *
       */
      
      /**class前
       * <p>Description:
       * <p>Class: C4
       * <p>Powered by Administrator On 2023-02-07 10:24
       *
       * @author Administrator [Administrator@126.com]
       * @version 1.0
       * @since 17 
       */
      
      /**class后
       * Description: 使用此快捷方式,在方法上输入/mm
       * @date: 2023/2/7 10:24
       * @params: [int]
       * @return: int
       */
      
(文档注释、类注释、属性注释、方法注释和类的结构属性与一个javadoc.exe命令相关)

javadoc命令可以根据文字的这些信息,快速生成类的api参考网页

javadoc -d …/api -author -version -charset utf-8 -encoding utf-8 -windowtitle CRM管理系统 *.java

idea tools菜单>Generate JavaDoc…>
Output directory:C:\api
Locale:zh_CN
Command line arguments:utf-8 -charset utf-8 -windowtitle JAVASE入门系统

generate

3、了解java标识符、关键字、保留字

标识符(identifier)-是指用来标识某个实体的一个符号,在不同的应用环境下有不同的含义。在计算机编程语言中,标识符是用户编程时使用的名字,用于给变量、常量、函数、语句块等命名,以建立起名称与使用之间的关系。

标识符是由字母 数字 下划线 $组成的,不能数字开头,不能使用空格和特殊符号

合法:Dog class_3 price $_7 $123 $23boy abc_123 ¥123 $3 6 ___
非法:.com #myname

保留字(reserved word),指在高级语言中已经定义过的字,使用者不能再将这些字作为变量名或过
程名使用。
保留字包括关键字和未使用的保留字。

关键字则指在语言中有特定含义,成为语法中一部分的那些字

关键字含义
abstract表明类或者成员方法具有抽象属性
assert断言,用来进行程序调试
break提前跳出一个块
case用在switch语句之中,表示其中的一个分支
catch用在异常处理中,用来捕捉异常
const保留关键字,没有具体含义
continue回到一个块的开始处
default默认,eg.用在switch语句中,表明一个默认的分支。java8中也作用于声明接口函数的默认实现
do用在do-while循环结构中
double双精度浮点数类型
enum枚举
extends表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口
final用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量
finally用于处理异常情况,用来声明一个基本肯定会被执行到的语句块
float单精度浮点数类型
implements表明一个类实现了给定的接口
import表明要访问指定的类或包
instanceof用来测试一个对象是否是指定类型的实例对象
interface接口
native用来声明一个方法是由与计算机相关的语言(C/C++/FORTRAN语言)实现的
new用来创建新实例对象
package
private一种访问控制方式:私用模式
protected一种访问控制方式:保护模式
public一种访问控制方式:共用模式
return从成员方法中返回数据
static表明具有静态属性
strictfp用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范
super表明一段代码需要同步执行
synchronized表明一段代码需要同步执行
throw抛出一个异常
throws声明在当前定义的成员方法中所有需要抛出的异常
transient声明不用序列化的成员域
try尝试一个可能抛出异常的程序块
void声明当前成员方法没有返回值
volatile声明两个或者多个变量必须同步地发生变化
varjava10新增的关键字,用来推断类型var i = 20;

在一些语言中,一些保留字可能并没有应用于当前的语法中,这就成了保留字与关键字的区别。
例如,Javascript有一些未来保留字,如abstract、double、goto等等。

//模拟goto语句
System.out.println("ok1");
System.out.println("ok2");
loop:
     for(;;){
          if(false) continue loop;
}
4、java有没有goto、const语句?

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html

5、掌握声明使用常量?
常量

eg.π= 3.1415…… 整数123,小数1.23,字符’A’,布尔常量 true、false等

指在程序执行期间其值不能发生变化的数据。

程序开发中,常量名一般全部大写,声明常量时必须赋值,以后只能使用,不能再赋值

java语言声明常量使用final

final-变量前面加final

package cn.webrx;
//静态导入 PI是常量,
import static java.lang.Math.PI;
public class V2 {
	//成员,属性
	final static int AGE = 18;
	public static void main(String[] args) {
	//局部 常量
	final double pi = Math.PI;
	System.out.println(AGE);
	System.out.println(pi);
	//使用常量
	System.out.println(PI);
	}
}
运行结果:
18
3.141592653589793
3.141592653589793
6、掌握声明使用成员属性(变量)、局部变量?
变量

是指在程序运行期间可以被改变的量。

变量用于储存信息。它指向内存的某个单元,而且指明了这块内存有多大。

java是强类型,变量必须先声明初始化才可以使用,变量名区分大小写。
package cn.webrx;

import java.util.Date;

public class Var1{
    //属性 成员 变量 属性 在实例化会自动初始化
    //int 0 double float 0.0 Object null boolean false
    Date age;
    int[] aa;
    //方法
    public static void main(String[] args){
        //局部变量
        //var v = new Var1();
        Var1 vv = new Var1();
        System.out.println(vv.age);
        //System.out.println(vv.aa);
        int x = 55;
        {
        //块级变量
        int y = 5;
        System.out.println(y);
        System.out.println(x);
        }
        int y = 6;
        System.out.println(y);
        System.out.println("Hello world");
        //合用局部变量,不会自动初始化,在使用的时候必须赋值初始化
        //String s = "Hello world"; 
        String s;
        s = "ok";
        //System.out.println(s.repeat(13));
        System.out.println("sq1server");
        System.out.println(s);
        System.out.println("s");
        //save(s) 保存
    }     
}
JAVA10 var 类型推断声明变量
package cn.webrx;

import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;

public class Var2{
    //错误,var局部变量类型推断,必须声明赋值,不能成员变量
    //var i = 5;
    
    public static void main(String[] args){
        //要求java 规范必须10 以上版本
        var v = LocalDateTime.now();
        var sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        var list = new ArrayList<Map<String,Object>>();
        var a = 15;
        a = 16;
        var d = new Date();
        
        for(var i = 1.0;i <= 5;i++){
            System.out.println(i);
        }
    }
}
7、掌握数据类型分类,8大基本类型?
两大类
  • 引用数据类型
  • 基本数据类型

基本数据类型和引用数据类型的区别?

(1)基本类型保存的是值,引用类型保存的是对象的地址,所有基本类型赋值是按值传递(拷贝赋值),引用类型赋值是按引用传递。

(2)基本数据类型是存放在栈中的简单数据段。

(3)引用数据类型是存放在堆内存中的对象,在栈内存中存放的是堆内存中具体内容的引用地址,

通过这个地址可以快速查找到对象。

8大基本类型:

byte short int long8 float double8 char boolean

可以分为三类:

  • 数值型:整数类型(byte8、short16、int32、long64)和浮点类型(float32、double64)
  • 字符型:char16
  • 布尔型:boolean8
byte<short<int<long<float<double (范围从小到大)
注意:
  • 浮点数的默认类型为double(如果需要声明一个常量为float型,则必须要在末尾加上f或F)

    整数的默认类型为int(声明Long型在末尾加上l或者L)

  • 八种基本数据类型的包装类:除了char的是Character、int类型的是Integer,其他都是首字母

    大写

  • char类型是无符号的,不能为负,所以是0开始的

/*
* Copyright (c) 2006, 2023, webrx.cn All rights reserved.
*
*/
package cn.webrx;
/**
* <p></p>
* <p>Powered by webrx On 2023-02-07 15:42:14</p>
*
* @author webrx [webrx@126.com]
* @version 1.0
* @since 17
*/
public class Type1 {
	public static void main(String[] args) {
        //byte short int long float double char boolean
        byte b1 = 5;
        System.out.println(b1);
        short s1 = 5;
        System.out.println(s1);
        int i1 = 5;
        System.out.println(i1);
        long n1 = 5;
        System.out.println(n1);
        System.out.println(Integer.MIN_VALUE);
        System.out.println(Integer.MAX_VALUE);
        float f1 = .5f;
        double d2 = .5;
        System.out.println(f1);
        System.out.println(d2);
        char c1 = 'a';
        int num = 'a';
        char c2 = '中';
        System.out.println(c1);
        System.out.println(num);
        System.out.println(c2);
        System.out.println((int) c2);
        boolean f = !!!false == true;
        System.out.println(f);
        int aaa2 = (int)2482482234553L;
        System.out.println(aaa2);
        double n = 10;
        //ctrl + d 复制行
        //alt + shift + up(down) 移动行
        //快速进入某处代码位置(使用idea 书签) f11 ctrl + f11 shift+f11
	}
}
面试题:
1.输出结果是什么?
byte a = 3;
a = a + 1;
System.out.println(a);
2.什么是设计模式?常用的设计模式有哪些?

设计模式是经验总结

常用的设计模式是单例模式等

eg.
//1、
short s1 = 1;
s1 = s1 + 1;
//有什么错?

//答:在进行s1 + 1运算时会自动提升表达式的类型为int,将int类型赋值给short类型的变量s1会出现类型转换错误

short s1 = 1;
s1 += 1;
//有什么错?

//答: 是正确的,+=是java语言规定的运算符,java编译器会对它进行特殊处理,所以可以正确编译
//byte<short<int<long<float<double (范围从小到大)

2、char类型变量能不能储存一个中文的汉子,为什么?

char类型变量使用的是Unicode编码的字符,

Unicode字符集包含了汉字,所以char类型当然可以存储汉字(还有一种特殊情况就是某个生僻字没有包含在unicode编码字符集中,那么就char类型就不能存储该生僻字)

3、Integer和int的区别

int是java的8种内置的原始数据类型。Java为每个原始类型都提供了一个封装类,Integer就是int的封装类。

int变量的默认值为0,

Integer变量的默认值为null,

这一点说明Integer可以区分出未赋值和值为0的区别,(比如说一名学生没来参加考试,另一名学生参加考试全答错了,那么第一名考生的成绩应该是null,第二名考生的成绩应该是0分)

关于这一点Integer应用很大的。

Integer类内提供了一些关于整数操作的一些方法(eg.上文用到的表示整数的最大值和最小值)

4、switch语句能否作用在byte上,能否作用在long上,能否作用在String上?

//byte<short<int<long<float<double (范围从小到大)

byte的存储范围小于int,可以向int类型进行隐式转换,所以switch可以作用在byte上

long的存储范围大于int,不能向int进行隐式转换,只能强制转换,所以switch不可以作用在long上

String在1.7版本之前不可以,1.7版本之后switch就可以作用在string上了

5、.64位的JVM当中,int的长度是多少?

Java 中,int 类型变量的长度是一个固定值,与平台无关,都是 32 位。

在 32位 和 64 位 的Java 虚拟机中,int 类型的长度是相同的4字节。

6、可以将int强转为byte类型么?会产生什么问题?

可以做强制转换,但是Java中int是32位的而byte是8 位的,所以,如果强制转化int类型的高24位将会被丢弃,byte 类型的范围是从-128到128

//7、判断输出结果

public static void say() {
	System.out.println(3 - 2.6 == 0.4);
}

//false ->int类型和float类型做运算会损失精度,所以不等
//byte<short<int<long<float<double (范围从小到大)
System.out.println(3 -2.6 );
//输出结果并不等于0.4

8、java 中 float f = 3.4; 是否正确?

不正确,因为3.4是双精度类型属于double类型,而double类型范围大于float类型,如果想要赋给float类型必须强制转换:

float f=(float)3.4;

float f=3.4F;

byte<short<int<long<float<double (范围从小到大)

//9、输出结果?

byte a = 127;
     a += 5;
System.out.println(a);

//124
//byte取值范围-128~127 当a+=1时此时已经是超过了byte的临界值此时输出的为-128 、a+=2时输出为-127,以此类推a+=5时输出为-124

10、为什么long l=2000000000可以,而long l=3000000000却编译报错

因为在Java中二十亿和三十亿的默认类型都是int类型的,而二十亿是在int范围类的,三十亿不在int范围内,所以后面的long l=300000000会编译报错。

解决方法:在三十亿后面加上一个大写或者小写的L

11、为什么 int a = 09;会报错

在进制表示中0开头的表示八进制,而八进制中不能出现大于7的数!

//12、输出结果?

int a=10;
double b=3.4;
System.out.println(a>b?a:b);
System.out.println(a);

//输出:10.0 10
//13、输出结果?

int a=128;
byte b=(byte)a;
System.out.println(b);//输出-128,出现了数据溢出

double c=1.23;
int d=(int)c;
System.out.println(d);//输出1,精度丢失
//14、输出结果?
//运算时,运算结果会向较大的类型转换

int a=3;
double b=4;
System.out.println(a+b);//输出7.0

15、为什么 byte b=10b会报错?

byte在java中表示字节,而b表示的是bit

8、掌握算术运算符 + - * / % ++ --?

运算符:是一种特殊符号,用以表示数据的运算、赋值和比较。

表达式:使用运算符将运算数据连接起来的符合Java语法规则的式子。

int i = 20*30;
运算符描述范例结果
+正号+33
+2+35
+字符串连接”hello“+2hello2
-负号-5-5
-5-23
*乘积2*36
/整除,求整商5/31
%取余5%32
++自加int i=0;i++;++ii=2
自减int i=0;i–;–ii=-2
9、利用入口方法String[] args,编写一个求两个数商和余数的案例程序,并运行出结果?
Integer.parseInt()
int i = 3;
Integer a = 3;

list<int>
list<Integer>

Integer.parseInt(args[0])
//转换
//求商和余数
/*
* Copyright (c) 2006, 2023, webrx.cn All rights reserved.
*
*/
package cn.webrx;
/**
* <p></p>
* <p>Powered by webrx On 2023-02-07 17:45:06</p>
*
* @author webrx [webrx@126.com]
* @version 1.0
* @since 17
*/
public class Ex01 {
	public static void main(String[] args) {
        int a = 10;
        int b = 2;
        a = Integer.parseInt(args[0]);
        b = Integer.parseInt(args[1]);
        //÷×+-
        if (a % b == 0) {
       		 System.out.printf("%d ÷ %d = %d%n", a, b, a / b);
        } else {
        	System.out.printf("%d ÷ %d = %d ... %d%n", a, b, a / b, a % b);
        }
    }
}
10.其他
10.1类型转换

自动类型转换隐式转换

转换规则:从存储范围小的类型到存储范围大的类型,即由低到高。

具体规则为:byte→short(char)→int→long→float→double

强制类型转换(float)3.5;

/*
* Copyright (c) 2006, 2023, webrx.cn All rights reserved.
*
*/
package cn.webrx;
import java.util.Date;
/**
* <p></p>
* <p>Powered by webrx On 2023-02-07 16:09:07</p>
*
* @author webrx [webrx@126.com]
* @version 1.0
* @since 17
*/
public class Type2 {
    public static void main(String[] args) {
        int a = 30;
        //自动转换
        long b = a;
        //强制转换
        byte c = (byte)a;
        //Date d = new Date();
        //int y = (int)ld.getTime();
    }
}
BigDecimal
package cn.webrx;
import java.math.BigDecimal;
public class Var3 {
	public static void main(String[] args) {
        BigDecimal bignum1 = new BigDecimal(10.0);
        BigDecimal bignum2 = new BigDecimal(.5);
        BigDecimal bignum3 = null;
        //加法
        bignum3 = bignum1.add(bignum2);
        System.out.println("求和:" + bignum3);
        //减法
        bignum3 = bignum1.subtract(bignum2);
        System.out.println("求差:" + bignum3);
        //乘法
        bignum3 = bignum1.multiply(bignum2);
        System.out.println("乘法积:" + bignum3);
        //除法
        bignum3 = bignum1.divide(bignum2);
        System.out.println("除法结果:" + bignum3);
    }
}

long b = a;
//强制转换
byte c = (byte)a;
//Date d = new Date();
//int y = (int)ld.getTime();
}
}


###### BigDecimal

```java
package cn.webrx;
import java.math.BigDecimal;
public class Var3 {
	public static void main(String[] args) {
        BigDecimal bignum1 = new BigDecimal(10.0);
        BigDecimal bignum2 = new BigDecimal(.5);
        BigDecimal bignum3 = null;
        //加法
        bignum3 = bignum1.add(bignum2);
        System.out.println("求和:" + bignum3);
        //减法
        bignum3 = bignum1.subtract(bignum2);
        System.out.println("求差:" + bignum3);
        //乘法
        bignum3 = bignum1.multiply(bignum2);
        System.out.println("乘法积:" + bignum3);
        //除法
        bignum3 = bignum1.divide(bignum2);
        System.out.println("除法结果:" + bignum3);
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值