zoukankan      html  css  js  c++  java
  • JAVA基础

     个人兴趣(大学生):喜欢专研  学习  数据结构  高数  线性代数  编程原理 

    计算机网络 操作系统 C/C++  英语

    人工智能核心(高数、概率论等)

    (这些基础决定的是高度)

    找工作:不用研究基础了,偏向应用-速成

    想通过java改变命运:建议 学历至少大专  大学  年龄 (建议30岁以下)

    下一代程序员:  学习控制人工智能了

    { 劝退 }

    想做游戏:java干不了  c、c++  java做网站的(B/S端比较多) app后台等

    黑客/游戏脚本:不要学java了。。。熟悉计算机网络、操作系统等等。。。

    计算机:CPU跟硬件有关,java主要跟(内存和硬盘)关系大

    计算机 其实就是 开关电瓶 01010110二进制

    ASCII 美国的

    gbk   中国的

    每个国家都有一套编码表  字符集

    ASCII(8bit美国的)  Unicode(16bit国际化的)

    Unicode 国际统一标准 UTF-8(写程序设置成UTF-8)

    Unicode是ASCII表的扩展,并不会冲突

    ----------------------------------------------------------

    java环境配置

    java8  1.8

    jdk:java development kit java开发环境

    jre:java runtime environment java运行环境

    进入jdk的bin目录 才能 执行java:运行java程序     javac:编译java

    环境变量配置后:java编译后 编程class字节码文件,然后进行运行java程序

    -------------------------------------------------------------------------

    java基础知识

    一.

    基本数值类型 6种

    byte 1个字节 8bit  2的7次方   -128~127

    short 2个字节 16bit

    int 4个字节 32bit -2的31次方

    long 8个字节 64bit

    float 32bit

    double 64bit 双精度小数

    字符类型

    char 2个字节 16bit  

    ASCII(8bit美国的)  Unicode(16bit国际化的):utf-8是它的实现方式

    char b='A';

    System.out.println(b);//A

    System.out.println(b==65);//true

    System.out.println((int)b);//65

    Unicode编码范围(16bit) u0000~uFFFF

    char y='u0041';

    System.out.println(y);//A即65

    字符串String

    String str = "欢迎";

    String str2 = "u6b22u8fce";

    System.out.println(str2);//欢迎

    str.substring(1);

    str.substring(1,4);//截取字符串 包头不包尾

    str==str2;//比较两字符串的内存地址 并不是比较内容

    str.compareTo(str2);//字典顺序  相等时返回=0,str>str2时返回>0,str<str2时返回<0,

    unix时间戳 1970-1-1 unix系统发布时间 

    long time = System.currentTimeMillis();

    int a=10;

    int b=10*a++或者10*(a++); //b=100

    int c=10*++a//b=110

    double t= 3/2;

    System.out.println(t);//1.0

    double t2= (double) 3/2;

    System.out.println(t2);//1.5

    Math工具类

    随机数生成:Math.random()  随机生成[0.0~1.0)之间小数

       Math.random()*50  随机生成0~50之间小数

       

    获取整数: (int)(Math.random()*50) 带括号强转为int类型,

    不带括号获得的随机数基本是0

    堆栈的概念(java虚拟机)

    栈的特点:后进先出

    (基本的数据类型都是)值传递:传递的只是值,变量没变

    引用传递:传递的是内存地址,会改变变量的值

    方法的重载:方法名一样  参数列表不一样(类型和数量),在同一个类种不会报错

    作用域:方法的堆栈

    最基础的查找:线性查找/二分查找(效率更高)

    二分查找:先把数组排序,由小到大 然后找中间轴元素 比较大小 依次查找中间轴 来进行查找.

    最基础的排序数组:选择排序/冒泡排序  ----其他,快速排序(递归)/希尔排序

    七/

    this 是指当前对象 static 是类的属性,存在static时可能对象还不存在,所以不能放在静态当中

    八 

    基本数据类型     包装类

    intInteger

    double          Double

    charCharacter

    无限大(以字符串模式存储,故可存较大数)

    BigInteger   big1.multiply(big2)  

    BigDecimal   divide若除不尽,要指定小数位数

    StringBuffer 线程安全  效率较低

    StringBuilder 线程不安全 效率高  同时操作添加的时候append容易造成混乱

    Java是一门面向对象编程语言,Java语言具有封装、继承、多态三个特性,这三个特征又使得Java语言比其他编程语言的功能更加强大强大、用起来更加简单。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程

     初级阶段:

    1.JAVA基础语法、 集合类、 线程、 IO操作;这些掌握了 基础算是过关了, IO操作有点麻烦 被搞晕没关系 知道什么时候用 用到了 再去搜索就行

    2.其次 web部分 servlet jsp session cookie mysql数据库 都要知道怎么操作怎么用 前端页面的话 html不必太深 能看懂就行 js或者jquery会操作dom能够把后台数据放到合适的位置就可以 现在前段js技术五花八门。学到这个阶段,你需要知道一个请求从页面或者移动端发起之后 经历什么样的过程再返回去的 知道ajax是什么 会发起异步请求到后台 。

    3.框架方面 别学struts hibernate了 很少有项目用了 学springmvc spring mybatis就可以 ,不必清楚实现原理 会搭框架 搞一个增删改查出来就行了

    中级阶段:

    1.你会框架的CRUD之后 你可以看一下nginx 可以尝试做一个负载均衡玩一下,这个不需要你写代码 只需要配置下 但是能有效的提高简历质量

    2.你还可以学习下MQ 就从activeMQ开始 尝试怎么用对接把任务异步出去

    3.你还可以试试redis 做个简单的数据缓存或者会话缓存,这时候你再去找工作就立马不一样了,学这三个可能也就用两三周不到,但是你的简历会体现出一个中级程序员的水平。

    那说到中级技术水平 个人觉得应该掌握的技术有 负载均衡 apache http 或者nginx均可, 队列 ActiveMQ 就行(这个是java语言写的比较贴近java ),缓存 redis就行 memcache用的越来越少了感觉,还有精力的话,可以看一下mogoDB 做个简单的demo存个json进去玩一玩。 然后你的简历又丰富起来了………你工作里肯定用不到那么多,但是你就往你简历里写,糅合进你的项目里去,反正你知道什么场景用这些就行,问不出来的。 初级和中级界限很模糊的,只是一些中间件的使用而已。

    http://www.toutiao.com/i6421696877745406465/?tt_from=weixin&utm_campaign=client_share&from=singlemessage&app=news_article&utm_source=weixin&isappinstalled=1&iid=10336304599&utm_medium=toutiao_ios&wxshare_count=2&pbid=1496298920

    我整理一下,大概就是这些难点,先整理一个大纲

     第一部分  java-数据类型

    java是跨平台的,JVM(java虚拟机根据系统改变)不能跨平台,但是jvm保证了java语言的跨平台

            

      Java中,若在变量声明时没有给变量赋初值,则会给变量赋默认值,如下图:

            

    一、数据类型的转换

    1.数据溢出(最大、最小值)

                    

    2.强制类型转化(解决数据溢出的问题)

                      

    二、字符类型(char 两个字节)

       计算机处理字符类型时,是把字符看成不同的整数看待。所有的文字、数值都会解析成0与1表示的二进制让计算机读取;

    由于0与1难以理解,所以就产生了各种编码来代表某个字符,如ASCII、Unicode。

    Java使用的就是Unicode字符码系统,它为每个字符制订了一个唯一的数值,来解决编码系统可能会产生的相互冲突的情形而导致数据跨平台发生的错误。

       

        

    1.转义字符

          

            

    2.char与String区别

          

      String与char类型的相互转化

        

    三、数据类型转换

    1.自动类型转换

      (1)short、byte可以自动转换为int。int可以自动转换为float、double

        

        

      (2)任何类型的数据都向String转型

         

    2.强制类型转换

     

    第二部分  Java的面向对象思想如何树立

    要知道Java面向对象的思想,那么我感觉应该对比着来学习。

    首先我们要区分一下“基于对象”和“面向对象”的区别。

    基于对象,通常指的是对数据的封装,以及提供一组方法对封装过的数据操作。

    而面向对象呢,则在基于对象的基础上增加了多态性。多态就是可以用统一的方法对不同的对象进行同样的操作。当然,这些对象不能完全不同,而需要有一些共性,只有存在了这些共性才可能用同样的方法去操作它们。就比如A 和 B 在继承关系上都有共同的祖先 R ,那么我们就可以把 A 和 B 都用对待 R 的控制方法去控制它们。

    其实这里面向还是有两个概念,面向过程和面向对象,这个可能就会很容易理解了

    面向对象是相对面向过程说的。

    简单来说,区别就是一个是make a dog bark,一个是a dog barks:

    make bark(dog)

    dog.bark()

    面向对象的做法确实是把属性和功能封装起来,但是其核心是归类和抽象。

    把相关的属性和功能集中起来,把可以分离的部分隔绝开来,从而把复杂的业务逻辑切割成互相 之间可以相对独立的部分,降低开发的难度。

    所以面向对象绝对不仅仅是弄一个class然后把一堆东西往里面塞,真正重要的是判断需要构造 哪些class,它们之间的关联,以及把什么东西往哪一个里面塞。


    还有一个更简单的例子

    给你一个任务,你要思考怎么做。

    如果你的思维方式是:我先做什么,再做什么……这叫面向过程;

    如果思维方式是:我先做一个什么东西来做这件事,再做一个什么东西来做那件事,然后它们怎 么相互配合……这叫面向对象。


    再通俗一点就是,面向对象是有个对象会给你做这件事,你只需要调用该对象就能完成这件事。而面向过程却是你得自己做。

    第三部分 JAVA 三大特性:封装、继承、多态

    1、 封装:该公开的公开,该私有的私有

      类的属性:就属私有,类的属性一般私有;

      类的方法:该公开的公开,该私有的私有;

      类,封装了数据和方法;

      方法,封装了实现的过程,接口是参数和返回值;

      数据原型类:又叫实体类

      1)get/set 方法;对某一个属性只提供get不提供set方法,就是只读的,在类的外部不能修改;

      2)提供统一的参数检查,在set上给与检查,判断合法性和安全性;

        将属性都私有,并且提供set/get 方法,做成了通用的组件,叫JavaBean;

    2、继承:任何父类适用的地方,子类一定适用

      单纯的代码复用不需要继承extends: 继承,实际上是对父类的扩展;

      生成对象的过程是怎么样的?

      1)分配对象空间;

      2)给属性赋初值;boolean:false;数值类型:0或0.0; 对象类型:null;

      3)调用构造方法;

    3、多态:类中多个方法的重载叫多态,父子类中方法的覆盖也叫多态。

      多态有两种体现:一个是方法的重装,一个是方法的覆盖

      多态有方法的多态和对象的多态(一个对象多种形态)。多态一定要将子类对象当作父类对象来看,

      所有的多态可以归结为两个定理:

      1).可以把子类对象当作父类对象来看,一旦这样做了,就只能去调用父类中原有定义的属性和方法,也就是子类中扩展的方法或属性就不能调用了。

      2).当我们把子类对象当作父类对象来看的时候,如果子类覆盖了父类中的方法,在调用的时候实际调用的是子类覆盖后的方法。

    个人兴趣(大学生):喜欢专研  学习  数据结构  高数  线性代数  编程原理 计算机网络 操作系统 C/C++  英语人工智能核心(高数、概率论等)(这些基础决定的是高度)找工作:不用研究基础了,偏向应用-速成
    想通过java改变命运:建议 学历至少大专  大学  年龄 (建议30岁以下)
    下一代程序员:  学习控制人工智能了
    { 劝退 }想做游戏:java干不了  c、c++  java做网站的(B/S端比较多) app后台等
    黑客/游戏脚本:不要学java了。。。熟悉计算机网络、操作系统等等。。。


    计算机:CPU跟硬件有关,java主要跟(内存和硬盘)关系大计算机 其实就是 开关电瓶 01010110二进制
    ASCII 美国的gbk   中国的每个国家都有一套编码表  字符集
    ASCII(8bit美国的)  Unicode(16bit国际化的)Unicode 国际统一标准 UTF-8(写程序设置成UTF-8)Unicode是ASCII表的扩展,并不会冲突
    ----------------------------------------------------------
    java环境配置
    java8  1.8jdk:java development kit java开发环境jre:java runtime environment java运行环境
    进入jdk的bin目录 才能 执行java:运行java程序     javac:编译java环境变量配置后:java编译后 编程class字节码文件,然后进行运行java程序
    -------------------------------------------------------------------------
    java基础知识
    一.基本数值类型 6种byte 1个字节 8bit  2的7次方   -128~127short 2个字节 16bitint 4个字节 32bit -2的31次方long 8个字节 64bit
    float 32bitdouble 64bit 双精度小数
    二字符类型char 2个字节 16bit  ASCII(8bit美国的)  Unicode(16bit国际化的):utf-8是它的实现方式
    char b='A';System.out.println(b);//ASystem.out.println(b==65);//trueSystem.out.println((int)b);//65
    Unicode编码范围(16bit) u0000~uFFFFchar y='u0041';System.out.println(y);//A即65
    三字符串StringString str = "欢迎";String str2 = "u6b22u8fce";System.out.println(str2);//欢迎
    str.substring(1);str.substring(1,4);//截取字符串 包头不包尾str==str2;//比较两字符串的内存地址 并不是比较内容str.compareTo(str2);//字典顺序  相等时返回=0,str>str2时返回>0,str<str2时返回<0,


    二unix时间戳 1970-1-1 unix系统发布时间 long time = System.currentTimeMillis();
    int a=10;int b=10*a++或者10*(a++); //b=100int c=10*++a//b=110
    double t= 3/2;System.out.println(t);//1.0double t2= (double) 3/2;System.out.println(t2);//1.5
    三Math工具类随机数生成:Math.random()  随机生成[0.0~1.0)之间小数   Math.random()*50  随机生成0~50之间小数   获取整数: (int)(Math.random()*50) 带括号强转为int类型,不带括号获得的随机数基本是0
    四堆栈的概念(java虚拟机)栈的特点:后进先出
    (基本的数据类型都是)值传递:传递的只是值,变量没变引用传递:传递的是内存地址,会改变变量的值
    五方法的重载:方法名一样  参数列表不一样(类型和数量),在同一个类种不会报错
    作用域:方法的堆栈
    六最基础的查找:线性查找/二分查找(效率更高)
    二分查找:先把数组排序,由小到大 然后找中间轴元素 比较大小 依次查找中间轴 来进行查找.最基础的排序数组:选择排序/冒泡排序  ----其他,快速排序(递归)/希尔排序
    七/this 是指当前对象 static 是类的属性,存在static时可能对象还不存在,所以不能放在静态当中
    八 基本数据类型     包装类intIntegerdouble          DoublecharCharacter
    无限大(以字符串模式存储,故可存较大数)BigInteger   big1.multiply(big2)  BigDecimal   divide若除不尽,要指定小数位数
    StringBuffer 线程安全  效率较低StringBuilder 线程不安全 效率高  同时操作添加的时候append容易造成混乱

















    火线速递:山川在我脚下,大地在我怀中;我就是这原野山川之主,我就是这天地万物之灵

  • 相关阅读:
    [转载]PHP中PSR-[0-4]规范
    Git忽略规则及.gitignore规则不生效的解决办法
    nginx配置tp5的pathinfo模式并隐藏后台入口文件
    php过滤&nbsp;字符
    使用ajax的post方式下载excel
    scws简单中文分词
    php的api及登录的权限验证
    对钩子的理解
    基于角色的权限控制
    微信开发之SVN提交代码与FTP同步到apache的根目录
  • 原文地址:https://www.cnblogs.com/huoxiansudi/p/6852312.html
Copyright © 2011-2022 走看看