java基础(一)基础认识、数据类型
基础知识
1.所有的java代码必须写在类里面,java的入口函数 main方法
public static void main(String[] args){ }
public ----访问修饰符
static ----方法是静态的
final 最终的修饰变量的时候需要赋初始值, 并且在修饰类的时候 该类是不能被继承的;
main-----方法名
String[] args -----参数;
变量和常量
eg: a=1; a=2; 变量a --- 随时可变 常量 12 ----不可变
2.声明一个变量的方式为:
数据类型 变量名; 也可以一开始给以个变量赋值,
数据类型 变量名 = 常量(或者另一个变量);
3.class类:
通过类创建对象的方式: 数据类型 变量名=new 构造方法();
this关键词 指向使用对象; 当参数名和属性名相同的时候主要用来区分参数名和属性名,加了this代表属性名;
原则:属性私有化,方法公开化;如果写公共的方法与类没关系的方法可以
使用static方法,缺点,静态方法不能使用类当中的非静态成员; 一档被修饰静态成员,可以直接用类名来调用;
4.JVM 分为堆 栈 方法区3部分
堆:以new关键词创建的对象;JDK1.7开始 字符串常量池也移到堆区中存放;
栈:以栈帧的形式存在,每调用一个方法,创建一个站帧,其中保存临时变量和参数;
方法区:保存所有静态成员,(static修饰的);所有类的信息;如果参数是基本类型,那么传递的是值,如果是引用类型,传递的是指向堆区中的内存地址;
5.数组:在定义的时候必须声明数组的长度;数组在使用中 可以使用for循环;
还可以使用 for(int i : a){ i一个一个便利数组a中的值
}
对数组中的值进行排序;冒泡排序:规则,相邻元素两两比较交换位置;
选择排序:先选出一个最小的或者最大的 放到边界;
6.数学函数:Math.pow(a,b); a代表的是底数. b代表的是指数;
7.Scanner 扫描器 java.util包下;
Scanner scanner = new Scanner(System.in);从控制台接收输入的内容;
.next();接收下面一次要输入的内容;(一行为单位)
.nextInt();接收输入下面要输入的一次数字;(以行为单位)
.nextLine();接收下一次输入的一行内的数据;(以行为单位)
.next()和nextInt() 不能和nextLine()同时使用
每一行结束的时候,我们手动输入了 换行"\r" 但是用next() 和nextInt()接收的时候,只会接收前面输入的内容, 而把"\r"留下, 而nextLine() 只要见了"\r" 就会默认有一行(会接收);
8.异常:运行期出现的错误:观察错误的名字和行号最重要;
java异常是java提供的处理程序中错误的一种机制,程序在执行过程中出现了异常事件,可以生成一个异常类对象,改异常对象封装了异常事件的信息并将被提交给java运行时系统这一过程成为抛出(throw)异常;
当java运行时系统接收到异常对象时,会寻找能处理这一异常的代码,并吧当前的异常对象交给处理,这一过程称为 捕获(catch)异常;
.try{可能出现异常的代码;
}catch(cException ae){
一旦try中出现了异常,则执行catch
}finally{
无论怎么都会执行final;
}
catch块中必须有和try块中相同的return();并且先finally之后 最后返回return;
异常分类(Throwable)
Error : 称为错误,有JVM抛出,包括动态链接失败,虚拟机错误等,程序不对其做处理;
Exception : 所异常类的父类,一般需要用户显式的声明或者捕获
RuntimeException:一类特殊的异常,如数组下标超出等,产生比较频繁,处理麻烦,(一般可以有系统自动检测用户可不必对其处理)
9.Math类 java.lang.Math;提供了一系列静态方法用来科学计算,方法的参数和返回值一般为double类型;
abs()绝对值
acos,asin,atan,cos,sin,tan
sqrt()平方根;
pow(double a,double b)a 的b次幂;
log();自然对数;
max(double a,double b);
min(double a,double b);
random()返回0.0---1.0的随机数;
toDegrees(double angrad);弧度-->角度;
toRadians(double angdeg);角度--->弧度;
10.Enum枚举类型
只能够取待定值中的一个;
使用enum关键字;
是java.lang.Enum类型;
11.重写equals()
来比较两个对象是不是相同,其中判断的规则可以根据需求自己定义;
12.Comparable 泛型接口
compareTo() 用来自定义排序规则; 大于 rerun 1 等于 return 0 小于 return-1;
数据类型
java的数据类型分两种
1.基本类型:
byte 1字节 8位
short 2字节 16位
int 4字节 32位
long 8字节 64位
float 4字节
double 8字节
boolean 1字节
char 2字节
2.引用类型:
类 (string 属于类)
数组
接口
3.源码 反码 补码
源码-----原数本身;
反码------符号位不变,其他位取反
补码------反码+1
补码专门用来表示负数,负数的补码为反码+1, 正数的补码就是自己本身;
4.运算符:
数学运算符:+ - * / % ++ --; a++先运算 后增加,++a 先加价再运算;
关系运算符:> < == <= >= != 计算出的结果是boolean类型
逻辑运算符: ! && || & | 对boolean类型进行计算
短路语: 只要前一个条件能计算出表达式的值后面都不会再进行;
全路语: | & 需要走完全部的路程;
位运算: & | ^ >> << >>> <<< 全部2进制位数都移动
5.if条件语句/循环语句;(循环三要素:计数器 循环条件 计数器更新)
switch case: 循环,break;
循环
while() for(); do{代码块} while{循环条件};
6.强制类型转换;
int i=128;
byte j=(byte)i;
char a=(char)i; a计算出的为ASCII码;
7.String(字符串)类型
String name = new String(); 使用new 创建;
String name = "张三"; 直接赋值, String 的底层是字符数组;
String 之间可以运算, 实现字符串的拼接;
String a="asdf";
String b="ads";
方法:toUpperCase() 大写转换;
float 精确为小数点之后7位;
double
8.包装类(在比较数字的时候一定要拆包装, 使用)integer在进行比较的时候,如果在8位
以内(-128---127)默认有一个缓存,对象会指向缓存的地址;
通常情况下,类下的属性都应该定义成包装类;
包装类都是引用类型;
byte 1字节 Byte
short 2字节 Shot
int 4字节 Integer
long 8字节 Long
float 4字节 Float
double 8字节 Double
boolean 1字节 Boolean
char 2字节 Character
Integer.paseInt(str); 将字符串中数字转换成Int数据类型的数字;
9.String字符串:
底层是char数组:
equals() 比较两个字符串的值是不是一致;
String.valueOf();强制类型转换; 参数为Object;
数组的长度length();
substring();截取字符串;一个参数的时候为开始截取的位置到结束.当参数为两个的时候,第一个为开始的位置,第二个参数为结束的位置;
replace();替换数组中的元素;第一个参数传要被替换的字符,第二个参数传替换之后的字符;
replaceAll();替换数组中全部选定的元素;第一个参数传 匹配的正则表达式,第二个参数传替换成什么字符串;
拼接字符串:
StringBuilder(); 非线程安全; 单线程拼接的时候使用;
append(" ");追加字符;
StringBuffer(); 线程安全; 多线程拼接的时候使用;
append(" ");
String+=的拼接方式 在jdk1.8的时候已经被优化,性能已经等同于StringBuilder();但是在开发中禁止使用;
instanceof 判断类型是否相同
数组
1.定义:在堆区中创建一个连续的内存空间来保存对象或者变量;
2.定义方式:
数据类型+[] 对象名=new 数据类型+[数组长度] //定义的时候不赋值
数据类型+[] 对象名={元素,元素} //定义的时候赋值
访问方式
对象名[数组的下标] 下标从0开始;
数组长度
数组名.length
增强for
for(数据类型 变量 : 数组对象){
方法体
}
3.排序:
冒泡排序,相邻两数互相比较,两两交换;
选择排序:用第一个和后面每一个比较;
数组的缺点:长度是固定的; 数组在扩容的时候不方便;
用final 修饰的String 是不能被继承的
4.集合
(1) ArrayList()------属于java.util包;若要提升性能,可以在参数中直接写出要添加的个数,固定size();的长度即可;
List ----------------
构造方法---如果不传参数,默认底层数组的长度是10;
如果有参数,底层数组长度和所传参数相同;
add()方法--代表向集合中添加元素,每添加一个 size 加1;
--当有两个参数的时候第一个为索引值,第二个为数据值
remove()方法,参数为索引值,
list.contains()传入一个元素,判断是否存在这个元素;
size方法--返回集合的长度(添加才算) 一旦长度超过底层数组长度 这自动扩展,每次扩展的容量为 原长度的1.5倍;
get方法--传下标,
ArrayList---遍历,
增强for
for(Object a:array){}
普通
for(int i=0;i<arr.size();i++ {}
迭代器迭代:
Iterator it = list.iterator();
while(it.hasNexe()){
Syso(it.next);
}
(2).HashSet(); 无序 去重复; 不能通过get()取出;
Set();
remove(); 参数传递的是数值;
(3).HashMap();
映射----键值对;
put( , )方法--存放---参数的类型为Object---存放的过程中(键)key不可重复; 值可以重复;
get(key)方法----获取---获取的过程参数为key;
containsKey();判断是不是存在这个key;
containsValue(); 判断是不是存在这个值value ;
hashMap()不支持增强for循环;
HashMap map = new HashMap();
5.二维数组:看成以数组为元素的数组----多维数组的声明和初始化,应该从高维到低维的顺序进 行;
静态初始化: int intA[][] = {{1,2},{2,3},{3,4,5}};
动态初始化: int a[][] = new int[3][5];
int b[][] = new int[3][];
b[0] = new int[2];
b[1] = new int[3];
数组的拷贝:
使用java.lang.System类的静态方法;arraycopy
System.arraycopy(s,0,sbak,0,s.length)各参数分别代表 s为从哪个数组复制,0代表从s的0号索引开始复制 , 然后复制到 sbak数组的0号索引开始,长度为s.length;
6.泛型集合:
规范了数据类型的集合;再定义的时候类型后用<规定的类型> 注意.泛型中不能使用基本类型;(但是可以用包装类替代)
例如 List <String> list = new ArrayList(); 规范了该对象只能存放String类型的元素,从Jdk1.7之后支持泛型推导,但是在在JKD1.7之前是不能被识别的,必须完整写,例如:
List <String> list = new ArrayList<String>();
Set<String> set = new HsahSet<String>();
Map<Integer , String> map = new HashMap<Integer , String>();
7.二分查找
前提条件:一个排序完整的数组才可以使用;
java基础(一)基础认识、数据类型相关推荐
- java8种基本类型长度_【Java基础】Java的8种基本数据类型深入介绍
Java的8种基本数据类型介绍 基本数据类型存储大小说明,在了解存储大小说明之前我们先来了解几个基本的概念:位(bit):位表示的是二进制位,一般称为比特,是计算机存储的最小单位. 字节(byte): ...
- 【Java基础系列】基本数据类型及包装类
Java共有8中基本数据类型:byte.boolean.char.short.int.float.long.double. 对应的包装类分别为:Byte.Boolean.Character.Short ...
- Java基础(一) 八大基本数据类型
自从Java发布以来,基本数据类型就是Java语言的一部分,分别是***byte, short, int, long, char, float, double, boolean***. 其中: 整型: ...
- Java 过一下基础
点我跳过黑哥的卑鄙广告行为,进入正文. Java多线程系列更新中~ 正式篇: Java多线程(一) 什么是线程 Java多线程(二)关于多线程的CPU密集型和IO密集型这件事 Java多线程(三)如何 ...
- java包装_Java基础之神奇的包装类(一)
1. 导读 JAVA中针对八种基本数据类型提供了相对应的包装类, 今天主要基于几个问题来分享下个人对于包装类的理解, 本期先分享下面两个问题: .1 什么是包装类? 有了基本类型, 为什么还需要有包装 ...
- java nextline_Java编程语言基础的9根支柱
Java编程的基础概念包括:数据类型,分支与循环等. 1.HelloWorld 先从最简单的Java程序开始: public class HelloWorld{ public static void ...
- Java培训零基础学员必须要知道的知识点
学习java那么遇到的知识点有很多,很多同学都会问到一些关于java的编程知识点,下面小编就为大家整理一下java培训零基础学员必须要知道的6个知识点. Java培训零基础学员必须要知道的6个知识点: ...
- java 必备_Java基础必备
标签: 写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行当的准新手们,希 ...
- 2.1JAVA基础复习——JAVA语言的基础组成注释和常量变量
JAVA语言的基础组成有: 1.关键字:被赋予特殊含义的单词. 2.标识符:用来标识的符号. 3.注释:用来注释说明程序的文字. 4.常量和变量:内存存储区域的表示. 5.运算符:程序中用来运算的符号 ...
- java ibatis 获取执行的sql_小程序官宣+JAVA 三大框架基础面试题
每天给你诚意满满的干货 虽然每天都会写代码,但编程语言里有太多知识点,许多知识长时间不用就会忘记,在我们要去参加面试或是其它一些场景下,需要做些题来查缺补漏.我在搜索过程中发现没有太好的刷题小程序,所 ...
最新文章
- Jenkins持续集成学习-Windows环境进行.Net开发4
- C++中各种弹出对话框
- 批量导入sql文件。
- 学完java学swift_前言最近学完Swift之后一直没有机会实战,发现由于Swift发展历史原因,目前网上大部分的算法都是使用C、Java或其他语言实现的,几乎没有使用Swift实...
- CodeForces - 1316B String Modification(找规律)
- 一文学会,胶位偏移、缺胶、断胶、溢胶检测
- angular示例_用示例解释Angular动画
- Vue 高效清空表单,一键清空表单
- day23 python学习 类 人狗大战
- mysql 几个超时参数(timeout)解释
- oracle的sql字符串转义,sql – 在Oracle数据库中搜索带转义的字符串
- 三菱 J2 J2S J3 J4 编码器 电机文件 修改ID 修改功率 修改型号
- lanp+nginx实现动静分离
- 上海电力大学计算机专业全国排名,上海电力大学有哪些专业 上海电力大学专业排名...
- C语言中getch()、getche()、getc()、getchar()、gets()、fgetc()、fgets()的区别与使用
- android 高德地图poi搜索周边
- vuepress-theme-reco评论管理
- ubuntu 里安装 OracleXE
- E-puck机器人-小白学习笔记(二)代码浅解读
- 超简单的Python教程系列——异步
热门文章
- 面向稀有事件的 Logistic Regression 模型校准
- Rime添加Emoji输入方案
- wox开机自启_Wox具有一切支持的Windows启动器
- BC32-CSQ总是99【SIM 有锁】
- 微服务Feign调用后开启Schedule报错No thread-bound request found: Are you referring to request attributes outsid
- 80核处理器_8核处理器+4K屏加持,首发6399元的联想YOGA 27一体机体验怎么样?
- 第21章 DHCP
- DPDK应用示例指南简介(汇总)
- 2019最新 《播布客鸟哥的Linux私房菜教程》
- 淘宝API item_search_similar - 搜索相似的商品