前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JAVA学习笔记(一)

JAVA学习笔记(一)

作者头像
HUC思梦
发布2020-09-03 09:57:47
3640
发布2020-09-03 09:57:47
举报
文章被收录于专栏:HUC思梦的java专栏

JDK :给Java开发人员使用的工具包,包括Java的开发工具,也包括JRE。其中开发工具中包括编译工具(javac.exe)、运行工具(java.exe)、打包工具(jar.exe)等。 JRE :Java的运行环境,包括Java虚拟机和Java程序运行所需的核心类库。 JVM :Java虚拟机。 两者之间的关系: JDK=JRE+开发工具 JRE=JVM+核心类库

JAVA配置jdk环境变量 JAVA_HOME C:\Program Files\Java\jdk1.7.0_21 Path %JAVA_HOME%\bin;

使用jar包时要这样使用“ java –cp test.jar Test” 记住Java程序中很容易犯的第一个错误:java.lang.NoClassDefFoundError – 初学者经常会遇到这个错误,而遇到这个错误,99.9%的情况,是因为你在CLASSPATH中忘 掉了需要的jar包 – 所以,遇到这个错误,回头去找齐你所有的jar包,然后再到java社区去问问题

关键字中所有字母都为小写; Java的命名规范: 包名:多单词组成时所有字母都小写,域名倒着写(com.***.www) 类名接口名:多单词组成时,所有单词首字母大写 变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写 常量名:所有字母都大写,多单词时每个单词用下划线连接

Java数据类型: byte 1个字节 (8位) -2^7------2^7-1 =-128 到127 short 短整型 2个字节 (16位) -2^15------2^15-1 3W多 int 整型 4个字节(32位) -2^31------2^31-1 上亿 long 长整型 8个字节(64位) -2^63------2^63-1 (后面加L) float 4个字节 (32位) 单精度(后面加f) double 8个字节(64位) 双精度 char 2个字节 boolean 1个字节 true false 强制类型转换:(byte)(a+10)--将a+10强制转换为byte 字符与数字计算会转化为ASCII码数字与数字计算 switch函数表达式中,java 1.6(包括)以前,只是支持等价成int 基本类型的数据:byte ,short,char,int(其他的都不可以)。1.7加入的新特性可以支持String类型的数据。 方法(函数): 注意: 1)方法不能定义在另一个方法里 2)方法可以调用另一个方法 3)方法没有返回值就不用写return 方法的声明要写void ,有就写return 4)方法不调用不执行 方法命名规则:如果是一个单词要全部小写,如果是二个单词,第二个单词首字母大写 什么是重载:在同一个类中,如果方法名相同,参数的类型及参数的个数不同即可,注意与返回值无关。

内存分析: 栈(stack)内存:用于存储局部变量,当数据使用完,所占空间会自动释放。方法运行时调入栈内存中,不再使用时,只删除栈内存中的方法,方法区内的方法依然保留。 堆(heap)内存:数组和对象,通过new建立的实例都放在堆内存中;每一个实体都有内存地址值;实体中的变量都有默认初始化值;实体不再被使用,会在不确定的时间内被垃圾回收器回收,存储全局变量。 方法区(数据区):用于存放方法,分为静态方法区和非静态方法区。

注意:int [][] arr= new int[10][];一维必须有值才能正确建立二维数组。 数组的特点: 1)创建时就给定大小(可以给0但,用打印或赋值时会报运行时错) 2)数组初始值: int型默认0 float型默认0.0f boolean 型默认false char型默认’\u0000’ 相于当 ‘ ’(空字符) 3)数组有下标,且从0开始 4)得到数组大小的属性:数组名.length

求最大值: int maxElement = a[0]; for (int x = 1; x < a.length; x++) { if (a[x] > maxElement) { maxElement = a[x]; } } return maxElement; 选择排序: for (int i = 0; i < arr.length - 1; i++) { for (int j = i + 1; j < arr.length; j++) { if (arr[i] > arr[j]) { int min = arr[j]; arr[j] = arr[i]; arr[i] = min; } }

冒泡排序: for(int i=0;i<arr.length-1;i++){ //控制比较的次数 -1: 因为是二二比较,比较的次数比数组长度要小1 for(int j=0;j<arr.length-1-i;j++){//-1:因为是二二比较;-i: 每比较一次,最后值一定是在最后面的,所以最大值就不用比较了。 if(arr[j]>arr[j+1]){//小的放前面,大的放后面 int temp=arr[j+1]; arr[j+1]=arr[j]; arr[j]=temp; } } 二分查找法: int min=0; int max=arr.length-1; int mid = (min+max)/2; while(arr[mid] != key){ if(key>arr[mid]){ min=mid+1; } else if(key< arr[mid]){ max=mid-1; } if(max<min){ return -1; } mid=(max+min)/2; } return mid;

数组的排序: Arrays.sort()方法:对数组进行从小到大排序,需要引入包 java.util.Arrays 数组的查找: java.util.Arrays.binarySearch(object [] arr ,object key)//一个是数组 一个是要查的数 有返回值: 如果找到返回下标,没找到返回-1 注意:此方法底层用的是二分查找法(折半查找法),所以用此方法之前先排序 数组的拷贝: Java.lang.System.arraycopy(源数组名,源数组起始位置,目标数组,目标数组插入位置,要拷贝的长度) 没返回值 注意:如:源数组里有6个,我们要拷贝出7个到目标数组,就会数组下标越界异常。

面向过程: 每一步都由我们自已亲自去完成,缺点,效率低,不容易维护,复用性差

面向对象的特点:使复杂的事件变简单 由执行者变成了指挥者 效率高,容易维护,复用性好。

注意:类名.方法名() 对象名.方法名()的区别?

类名.方法名() 方法名加了static 对象名.方法名() 方法名没加static 一个类文件可以有多个类,但是类文件名所对应的类前面必须是public,一个类只有一个类名是public的 一个类中没有main()方法是可以的,但是不能被JVM所调用。

注: 类名 变量名 = new 类名 (); 变量名 =null; 变量名.属性=值。 变量名.方法(); 会报空指针异常

局部变量和全局变量的区别? 1.全局变量定在类中,整个类都可以用 局部变量定义在方法中,代码块中,语句中,只有所属的区域有效 2.全局变量存在堆(heap)中,局部变量存在于栈(stack)中 3.全局变量随着对象的创建而存在,随着对象的消失而消失。 局部变量随着所属区域执行而存在,执行结束而消失。 4.全局变量都是有默认初始值的,不给值能用 局部变量没有默认初始值的,不给值不能用

局部变量与全局变量重名 重名先在所在区域中找变量,如果所在区域没有去全局中找,如果都有就用所在区域中的变量

类类型(引用型)当参数:对象中的属性相同我们可以把他们共同的属性写在一个方法里

匿名对象:没有名字的对象 new Ren(); 匿名对象特点:如果这个对象里的方法或属性,只被调用一次,那么就可以用匿名对象它主要的功能是为了简化程序员书写代码。

基本数据类型当参数:方法的参数是一个数值 引用数据类型当参数:方法的参数是一个地址

Java权限访问修饰符 1.public:公共权限 修饰类、属性、方法。可以被任意类访问。 2.protected:受保护的权限 修饰属性、方法。可以被同包类访问,如果不是同包类,必须是该类的子类才可以访问。 3.default:同包权限 修饰类、属性、方法。 只能被同包类访问。 4.private:私有权限 修饰属性、方法。 只能在本类中访问。

封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。 好处:将变化隔离、便于使用、提高重用性、提高安全性。 封装原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共方法对其访问。 封装主要使用private 用Myeclipse来写set() get() 在类右键-----》source---> getters and setters 注意:private私有是封装的一种体现,私有是封装,但封装不单单指的是私有。

构造方法是干嘛用的? 是为了创建对象用的。 构造方法的分类? 默认构造方法和自定义构造方法 构造方法特点: 类名和方法名相同,访问权限修饰符和类的访问权限修饰符相同(可省略)。 构造方法没有返回值,且不用void 。 默认构造方法和自定义构造方法的区别? 1)默认构造方法是无参的。自定义构造方法是有参的。 2)自定义构造方法可以有多个,多个构造方法是以重载的形式存在的, 默认构造方法只有一个。 3)默认构造方法在类中默认(不写)存在。 4)类中如果有自定义构造方法,但不写出默认构造方法,那默认构造方法就消失。

什么时候用自定义构造方法? 在创建对象时,想让对象一创建出来就带有一些指定的值,用自定义构造方法。 如果带默认值用默认构造方法。

构造方法和普通方法的区别? 1.构造方法:对象创建时,就会自动构造方法,对类进行初始化。 普通方法:对象创建后,才能调用普通方法 2.对象创建时,构造方法只会调用一次 普通方法:对象创建后,可以被调用多次 注意:构造方法和赋值方法不冲突

this:代表当前对象 this如何用? 1.当参数名和全局变量相同时,在赋值时用this!!!!!!(必须), 2.对象调用属性时用this(不是必须,可省略) 3.对象调用方法时用this(不是必须,可省略) 4.默认构造方法调用自定义构造方法: Book3(,,) 1)默认构造方法中this(,,),必须放在当前构造方法的第一行 2)自定义构造方法调用默认构造方法 Book3() 自定义构造方法this(),必须放在当前构造方法的第一行 注意:用this在调用构造方法时,不要出现死循环。

static : 静态的。可以修饰属性,方法,代码块。 属性: 1)通过类名.属性名 2)被所有对象共享 方法:通过类名.方法名 -----》对象名.方法名() 代码块:在类加载时就执行,且执行一次 静态代码块 > 构造代码块 > 构造方法

static代码块 随着类的加载而加载,只执行一次 用于给类进行初始化 构造代码块(构造方法给对象初始化) { } static代码块和构造代码块同时出现时优先级 静态代码块>构造代码块>构造方法 static使用时间: static修饰属性:这个属性如果被所有对象共享。 static修饰方法:该方法是访问对象中的静态变量的。

static方法只能访问static变量;非static方法能访问static和非static变量。 static方法不能使用this关键字,局部变量不能用static来修饰。

非静态变量和静态变量的区别? 二个变量的生存周期不同   非静态变量随着对象的创建而存在,随着对象的回收而释放   静态变量随着类的加载而存在,随着类的消失而消失 调用方式不同   非静态变量只能被对象调用   静态变量可以被对象,还可以被类调用 别名不同   非静态变量称为实例变量   静态变量称为类变量 数据存储位置不同   非静态变量存储在堆内存的对象中,也称为对象的特有数据   静态变量数据存储在方法区(数据区)的静态区中

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-05-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档